SOAP, originally defined as Simple Object Access Protocol. It relies on Extensible Markup Language (XML) for its message format.SOAP has been adopted as the standard for Web services, and applications from major vendors have developed SOAP APIs for their products, thus making software systems integration easier.

Transport methods

Both SMTP and HTTP are valid application layer protocols used as Transport for SOAP

Message format

POST /InStock HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
SOAPAction: “”

<?xml version=”1.0″?>
<soap:Envelope xmlns:soap=””>
<m:GetStockPrice xmlns:m=””>


  • SOAP is versatile enough to allow for the use of different transport protocols. The standard stacks use HTTP as a transport protocol, but other protocols such as JMS[7] and SMTP[8] are also usable.
  • Since the SOAP model tunnels fine in the HTTP get/response model, it can tunnel easily over existing firewalls and proxies, without modifications to the SOAP protocol, and can use the existing infrastructure.


  • Because of the verbose XML format, SOAP can be considerably slower than competing middleware technologies such as CORBA.
  • When relying on HTTP as a transport protocol and not using WS-Addressing or an ESB, the roles of the interacting parties are fixed. Only one party (the client) can use the services of the other. Developers must use polling instead of notification in these common cases.


To start, First enabling the php SOAP extension  php_soap

When programming some soap server set the “soap.wsdl_cache_enabled” directive in php.ini file to 0:


php Soap Client Call

$client = new SoapClient(“some.wsdl”);
$client = new SoapClient(“some.wsdl”, array(‘soap_version’   => SOAP_1_2));
$client = new SoapClient(“some.wsdl”, array(‘login’          => “some_name”,
‘password’       => “some_password”));

$client = new SoapClient(“some.wsdl”, array(‘proxy_host’     => “localhost”,
‘proxy_port’     => 8080));

$client = new SoapClient(“some.wsdl”, array(‘proxy_host’     => “localhost”,
‘proxy_port’     => 8080,
‘proxy_login’    => “some_name”,
‘proxy_password’ => “some_password”));

$client = new SoapClient(“some.wsdl”, array(‘local_cert’     => “cert_key.pem”));

$client = new SoapClient(null, array(‘location’ => “http://localhost/soap.php”,
‘uri’      => “http://test-uri/”));

$client = new SoapClient(null, array(‘location’ => “http://localhost/soap.php”,
‘uri’      => “http://test-uri/”,
‘style’    => SOAP_DOCUMENT,
‘use’      => SOAP_LITERAL));

$client = new SoapClient(“some.wsdl”,

$server = new SoapClient(“some.wsdl”, array(‘encoding’=>’ISO-8859-1’));

class MyBook {
public $title;
public $author;

$server = new SoapClient(“books.wsdl”, array(‘classmap’ => array(‘book’ => “MyBook”)));




FullText Search Solutions

Types of FullText Search Solutions

  • Special Database Features
    • MySQL Full Text Search, Sienna
    • Solutions exists for PostgreSQL, Oracle and many others
  • Home baked database based solutions
    • Using stored procedures or set of queries and keyword tables for search
  • External Full Text Search Solutions
    • Lucene, Sphinx, Mnogosearch etc.

My Thoughts on Performance

  • Lucene and Sphinx both can handle large data sizes
  • Lucene has more features, dynamic updates
  • For the lamp developer use the Zend Framework’s Lucene Search which is based on Lucene but it will not work on php 4.
  • speed of fulltext search in lucene is much faster as compared to mysql
  • lucene is much more complex to use as compared to mysql.
  • lucene does not allow us to modify a document. Modifying a document is equivalent to deleting the current document and adding the modified document to the index.
  • lucene requires an object of the index to perform the search. We will know about it when we use the api. Whenever we add a new document to the index, a new object of the index has to be created to include the new document in the index. But creation of a new object is not a major overhead. Though it does slow down the searching process to some extent.
  • MySQL FullText Search is good for Small (relatively) data sizes

MySQL FullText Search and Updates

  • Simple: In mysql, we can simply mark an index on a text/varchar column as fulltext, and our work is done. All we need to do next is to fire MATCH AGAINST queries. Adding and modification of indexes is handled by mysql internally as and when new data is added.
  • MyISAM FullText Search is based on BTREE
    • Special form of BTREE index
  • Each word is index entry
  • Updating text with 1000 words – 1000 key entries needs to be updated
    • A lot of random IO if index is not in memory
  • Index degradation by fragmentation
    • Run OPTIMIZE TABLE for best performance
  • Minimum Length: With mysql we have the minimum length of word to be indexed which is by default 4. So all words which have less than 4 characters will not be indexed. What will we do if we want to index words like “php”, “asp”, “c”? We will have to decrease the minimum length from 4 to 1. And this will increase the index size drastically and slow down all our searches as a consequence. There are no such issues in lucene.


Lucene is a free/open source information retrieval library, originally implemented in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License. Lucene has been ported to programming languages including Delphi, Perl, C#, C++, Python, Ruby and PHP.

  • Popular full text search Library written in Java
    • Clucene – C port exists, but is not current
    • Is not specially tailored for indexing databases
    • Some coding is needed for integration
  • Dynamic index changes possible
  • Very Advanced query language
    • Wildcard searches:
    • Search in Fields: title:”The Right Way” AND text:go
    • Proximity Searches, Fuzzy Searches etc
  • Supports attributes (indexed and non indexed)
  • Some CJK Support
  • Easily integrates with Java

Sphinx Search

  • Designed for indexing Database content
  • Focuses
    • High performance
    • Search Quality
    • Ease of use
  • Supports multi-node clustering out of box
  • Support Multiple Attributes
  • Different sort modes (relevance, data etc)
  • Supports trend queries
  • Support for snippets
  • Client available as MySQL Storage Engine plugin
  • Number of limitations
  • no partial word searches, hard to update indexes


  • Very fast for medium size data sizes
  • Only boolean searches available


PHP and

Ever since Microsoft has come up with, there has been a widespread debate among programmers as to whether it is any better than the existing open source programming language of PHP.

If we were to make a search on the Internet on how loyalists of both PHP and are doing almost everything by biting each other’s heads off, We will realize how hot this debate actually is. The major contention is that Microsoft products are generally considered to be superior to other products, but then there are programmers that have been using PHP since ages and never once has it let them down. While there is acclaim for being more robust and speedier, PHP fans maintain that PHP has much better support and a very easy to understand language.

PHP Strong Points:

  1. Once again PHP is Free and that is a major advantage and often the decider between which language should be used. Microsoft has expensive licensing costs which are handed back to the user via more expensive hosting costs. Dedicated servers with our own MS SQL database from Microsoft is rare for smaller sites due to the cost involved.
  2. Ease of learning. PHP is a straight forward scripting language, there is not a great deal of learning required before we can start programming with this language. does a lot to help for this, it is the single, most convenient API and reference guide and in my opinion better than any other for any other language that is available. ASP.NET on the other hand requires basic programming fundamentals, and an understanding of object oriented principles which may be beyond the causal coder.
  3. PHP is a very fast and efficient implementation of a programming language. It doesn’t nearly use as much memory or execution time as ASP.NET, while this may not be noticable to many websites, for people pushing the limits of their website, it is a major consideration.
  4. One argument I hear a lot of ASP.NET developers raise is that there is a great IDE to develop the software on, Visual Studio.NET. While I have to agree that it is great, it does once again come with a price. Similar alternatives for the PHP language, such as Zend Studio are just as good and come at a tenth of the price.
  5. PHP runs on APACHE which has a great security track record and is open source. However IIS, the platform for ASP.NET has in the past been plagued with problems and security concerns. Regardless of whether people are just attacking it because it’s Microsoft, the flaw to be exposed is still there.
    ASP.NET Strong Points:# ASP.NET has something called the Common Language Runtime(CLR), and without going into too much detail, We can use a variety of different languages to program in, and when built they will all compile to the same code at that level. This means that we can use languages such as C#, Visual Basic.NET, Java.NET and we can even get implementations in PHP. This aids transition and helps other developers already learned in the lore of a certain language quickly pick up.
  6. This isn’t necessarily a positive but as ASP.NET is a commercial framework, bigger companies have more faith and trust in the software, and quite often a great deal of support can be gained because of this.
  7. .NET is a modern framework that has been designed from scratch. Thus meaning that the architecture, design and implementation of the languages involved are up to date and using modern principles. For example, C# is a fully object oriented language and builds on all the correct rules of programming. Regardless of the fact it may indeed take longer to program this way, it is cleaner, and logically it makes more sense and in the long run leads to less mistakes due to it’s strong typing.
  8. Exception/Event Based Error handling is a definite positive for ASP.NET. With the use of try catch blocks (although expensive) allow more sophisticated error handling. Whilst error handling in PHP is possible, there is no built in standardised way to achieve this.
  9. ASP.NET allows what is known as Code Behind Sheets. This effectively separates the logic from the design and allows us to create classes for each of our pages, leading to easier maintenance and clean code. This is possible in PHP but is certainly not a built in or standard feature as such.So the main question is, which one would I pick? Really, it’s not that simple, it’s usually more a question of which one is the best for the job in hand, or even more likely the project we have to work on has already been started in one language by our employers and which we must continue in.

If it was entirely a personal opinion, I would pick the cheaper option PHP, if however there were no costs I would pick ASP.NET.As the debate between PHP and rages on, it is important to make a frank comparison between the two languages, so that other developers who are not so strong in their opinions are not caught in the argument between the two. Here are some of the important points that distinguish the two programming languages from each other:-  (For the uninitiated, PHP stands for Hypertext Preprocessor and stand for Active Server Pages. It helps to put things into better perspective!)

  • PHP is a relatively simpler language to use than Initially, PHP was written in the C programming language to replace a set of scripts in Perl. That is the reason why coding in PHP remains simple even today. Many developers find themselves to be more at ease with the user-friendly nature of PHP when it comes to coding. However, critics also count this advantage of PHP as a disadvantage. Some of them maintain that the language of PHP has not been updated much, and hence it is still quite archaic and even, somewhat cumbersome for coding., which is a relatively new development, has a lot of options when it comes to languages. Here, we can use languages such as C#, J#, C++ and Hence, when it comes to sheer choice, has better to offer. But PHP is no less, since it can do its task quite well, even with its minimum language tools.
  • PHP is has much better support for the database management system, MySQL. In fact, the very popular blogging platform, WordPress uses the formidable combination of PHP coding on MySQL for its content management system, which includes about hundreds of thousands of blog posts every single day. Another very popular and frequently updated service that uses the combination of PHP and MySQL is Wikipedia. can also support MySQL, but PHP is unanimously hailed, by the masses and classes alike, for its great support for this database management system.
  • People who use both PHP and also maintain their opinion that PHP is better for embedded support with another database management system, viz. SQLite. SQLite is described as a relational database management system and since it is contained in a C programming library, PHP can provide better support to it.
  • PHP has also a very good support for object oriented programming, on which whole scripting languages are being built nowadays. also provides very capable support to OOP.
  • When it comes to support, PHP wins over The main reason for this is that PHP is open source. Hence, the support can come freely from all over the world. In most cases, PHP fixes are made instantly. Being open source also ensures that there are very few snags in PHP. While, could take a while to make fixes. That is because it is owned by Microsoft, and it is the development team of Microsoft that will need to respond to the support query. That could take more time than the worldwide open source support that PHP is able to get. Most PHP supports can be instantly found online by doing a simple search on the Internet. Some of the providers of support for PHP are Zend, NuSphere and ThinkPHP.
  • PHP can use the command line to perform many everyday activities. Some of the things that the PHP command line is useful for is for manipulating across many files and for putting files into multiple directories at once. These are just some of the important features that PHP’s command line is used for.
  • PHP is an open source programming language, which means it is free for anyone to use. Programmers can develop PHP applications virtually at no cost, because PHP is free to use. is not free too, but its extensions are available for free on Windows platforms, upwards of 98. Hence, is available to Windows users when they buy it. That puts a bit of restriction in its use.
  • is compiled into memory in binary code. So, when is used for coding, it is evident that it takes much longer time to process since the codes need to be retrieved from memory. However, PHP is not compiled into memory like is. It is interpreted at runtime. That is the reason why PHP coding leads to better speed and even efficiency. However, it must be said that both PHP and can run at supreme speeds and efficiency when they are coded expertly.
  • Talking about hosting charges, both PHP and are quite cheap to host. If We do a good deal of shopping online, We will also be able to find hosting for as little as $4. While there are several pricier hosting services out there, their charges are higher for both PHP and Hence, it can be said that both PHP and are at par with each other on the hosting charges.
  • Since PHP is older, there are many people who claim that it is much more secure than where coding is concerned. is much new, and the security options may not be fully in place yet. However, many programmers will pooh-pooh at this point, because they maintain that security in coding does not depend on the language that is used, but in the way that the coding is done by the coder. Even so, there is a lot of talk on the Internet about PHP coded sites being more difficult to hack into than those done with

Hence, there is a lot to debate on about the worthiness of PHP over or vice-versa. There is probably no end to it, and there never shall be. The problem mainly is that both of them are good in their own place, but people who have been staunchly using PHP for several years now – some of them for more than a decade – would certainly not like to go in for the new The price to be paid is quite high, i.e. learning a whole new syntax and getting used to it. That is more the reason why PHP is still so popular.

But, to’s credit it must be said that it is much more dynamic, even if the mere use of different languages are concerned. While PHP is still stuck to its scripting language days, has broken new grounds by entering into new languages, and even developing some of its own. However, a new shadow is looming large on these language-programming tools – the coming of the WYSIWYG editors such as Dreamweaver, which are making coding a very simple task to do for even the lay computer user..

PHP: MVC Based Popular Framworks

  1. PHP on Trax
    1. Strictly follows Ruby on Rails syntax and functionality but written in php5.
    2. Originally called PHP on Rails.
    3. It is a web-application and persistance framework that is based on Ruby on Rails and includes everything needed to create database-backed web-applications according to the Model-View-Control pattern of separation. This pattern splits the view (also called the presentation) into “dumb” templates that are primarily responsible for inserting pre-build data in between HTML tags. The model contains the “smart” domain objects (such as Account, Product, Person, Post) that holds all the business logic and knows how to persist themselves to a database. The controller handles the incoming requests (such as Save New Account, Update Product, Show Post) by manipulating the model and directing data to the view. In Trax, the model is handled by what’s called a object-relational mapping layer entitled Active Record. This layer allows you to present the data from database rows as objects and embellish these data objects with business logic methods.
    4. URL ~
  2. Agavi
    1. Its an open-source, LGPL licensed MVC framework for creating applications written using PHP5.
    2. Agavi is a Web Application Framework for PHP 5. While it lies in the nature of a framework to simplify the application development process, Agavi won’t do that at any cost. The primary goals are flexibility, cleanliness and structure. We won’t find HTML Form helper methods in Agavi (because they aren’t necessary, it has something better, more on that later), and it use XML configuration files because it believe that XML offer better structuring abilites than alternatives such as YAML.
    3. Every Agavi Application consists of one or more Modules. Each Module contains one or more Actions. Actions contain logic code and are totally independent of the way you’re using them, be it through a normal web application, or via a SOAP interface – the code remains exactly the same, you usually never touch them again once they are finished.
    4. URL ~
  3. Akelos PHP Framework
    1. Its a Ruby on Rails port to PHP4/5.
    2. The Akelos PHP Framework is a web application development platform based on the MVC (Model View Controller) design pattern. Based on good practices, it allows you to:
      1. Write views using Ajax easily
      2. Control requests and responses through a controller
      3. Manage internationalized applications
      4. Communicate models and the database using simple conventions.
    3. URL ~
  4. BareBonesMVC
    1. A one-file, no-configuration, MVC framework for PHP5.
  5. CakePHP
    1. It webapplication framework modeled after the concepts of Ruby on Rails.
    2. CakePHP is a free open-source rapid development framework for PHP. Its a structure of libraries, classes and run-time infrastructure for programmers creating web applications originally inspired by the Ruby on Rails framework.
  6. CodeIgniter
    1. CodeIgniter is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications.
    2. CodeIgniter is an Application Framework
    3. CodeIgniter is written to be compatible with PHP 4.
  7. DragonPHP
    1. MVC2 Framework for PHP 5.
    2. Key Features
      1. Request Dispatcher
      2. Session Management
      3. Page Controller
      4. Page Flow Routing
      5. Security
      6. Common Logger
      7. Validator (i.e. Form Validation)
      8. Dynamic Templating
      9. Modules
      10. Database Access
  8. Fusebox
    1. Framework for building ColdFusion and PHP web applications.
    2. The main features are
      1. A Fusebox application is made up of Circuits. A Circuit corresponds to a directory in your application. Within each circuit are one or more Fuseactions. A Fuseaction is a request handler. And finally, a Fuseaction does its work by executing one or more Fuses. Fuses are individual CFML templates such as display files.
      2. The framework uses XML configuration files to define the application settings as well as declaring what each Circuit does and how Fuseactions within each Circuit execute. There is a core set of XML grammar that is used to create these files.
      3. The framework is fully extensible via Plugins, which allow you to extend the core functionality without having to modify the core files. It also supports Custom Lexicons, which allow you to extend the XML grammar with your own tags. As a result, Fusebox is very flexible and can support a wide range of development needs.
      4. Fusebox does not force the Model-View-Controller (MVC) pattern or Object-Oriented Programming (OOP) on the developer. However, either or both of these development approaches can be used with Fusebox.
  9. FUSE
    1. A powerful but easy-to-use PHP 5 Framework for MVC development
    2. FUSE provides a powerful application development engine that allows us to:
      1. Rapidly create a working Model/View/Controller structure to properly organize your application
      2. Model your database tables (often automatically) to provide application-level access to data without SQL.
      3. Offer fully functional create, read, update, and delete functions with only a few lines of code
      4. Create a user authentication (login/permissions/privileeges) scheme for your site with just a few lines of code
      5. Call PHP functions from Javascript via a custom AJAX implementation
      6. Route URIs, which eliminates the need for ugly query strings and can greatly assist with SEO
      7. Separate HTML presentation from application code with a powerful but easy templating engine. etc.
  10. KohanaPHP
    1. Kohana is a PHP 5 framework that uses the Model View Controller architectural pattern. It aims to be secure, lightweight, and easy to use. The main features are:
      1. Highly secure
      2. Extremely lightweight
      3. Short learning curve
      4. Uses the MVC pattern
      5. 100% UTF-8 compatible
      6. Loosely coupled architecture
      7. Extremely easy to extend
  11. LightVC
    1. Lightweight PHP 5 Strict MVC Framework with decoupling of Model and other non-View-Controller essentials to promote code reuse.
    2. Features :
      1. Lightweight single-file view-controller framework.
      2. Allows usage of any model or ORM.
      3. Promotes code re-use.
      4. Highly configurable.
      5. Fast.
      6. PHP5 Strict.
  12. MicMVC
    1. A simple framework for creating standalone MVC websites in PHP5 with RoR style models.
    2. micMVC does not require an application framework to be installed on the host computer as an application written using micMVC packages all the necessary framework code with the application.
  13. Odin Assemble
    1. Small footprint PHP based MVC Framework. The Odin Assemble engine works with your web servers existing 404 handler to act as your “web-site.” Odin Assemble works behinds the scenes to create HTML responses that appear to be static HTML documents. Odin Assemble provides a layer of functionality nonexistent in traditional web servers.
    2. Odin Assemble was designed to work in a limited resource environment performance is healthy. For maximum performance it’s recommended you set $_page_cache_life in your file to between 360-600. If you have a web-site that has limited or no use of random “elements” then you can improve your web-site assemble time by increasing the $_page_cache_life value.
  14. phpHtmlLib
    1. MVC based OO framework compatible with PHP4 and PHP5 licensed under GNU LGPL
    2. phpHtmlLib is now an application development framework for developing OOP style web applications in PHP. The application framework supports an MVC style architecture, Ajaxable and Cacheable interfaces for developing rich client web applications. It still contains the set of PHP classes and library functions to help facilitate building, debugging, and rendering of XML, HTML, XHTML, WAP/WML Documents, and SVG (Scalable Vector Graphics) images as well as complex html Widgets .
  15. phpXCore
    1. A MVC design pattern based PHP content management framework compatible with PHP4 and PHP5.
    2. Main features are :
      1. Open-source
      2. MVC controller
      3. Compatible with PHP4 and PHP5
      4. Request dispatcher with good looking, custom URLs
      5. Use PEAR packages (
      6. Fast, flexible templating (
      7. Easy AJAX integration (
      8. JavaScript framework (
  16. PRADO
    1. A PHP 5 MVC framework.PRADO is a component-based and event-driven web application framework for PHP5. PRADO reconceptualizes Web application development in terms of components, events and properties instead of procedures, URLs and query parameters. PRADO is an open source project. PRADO stands for PHP Rapid Application Development Object-oriented.
    2. The design of PRADO was influenced heavily by ASP.NET and Borland Delphi.
  17. SilverStripe contains a fully fledged PHP 5.2 ORM/MVC Framework focused on building websites.
  18. Solar PHP 5 frameworkSolar is a PHP 5 framework for rapid application development. It is fully name-spaced and uses enterprise application design patterns, with built-in support for localization and configuration at all levels.
  19. OnPHP onPHP is the mature GPL’ed multi-purpose object-oriented PHP framework (plus c-module)
  20. Switch board with Routing PHP 5 MVC Framework with Routing.
  21. Symfony Framework PHP 5 MVC Framework.
  22. TinyMVC Framework Simple and lightweight PHP5 MVC (Model-View-Controller) framework.
  23. TYPO3 extension library lib/div PHP 4/5 MVC framework for TYPO3 extension development
  24. Qcodo is an open-source PHP 5 web application framework
  25. Zend Framework A PHP 5-based MVC framework.
  26. ZNF PHP5 MVC framework for enterprise web applications
  27. Zoop Framework A Mature PHP 4/5 MVC framework.
  28. Lion Framework An open-source PHP 5 framework with a push & pull MVC implementation



LAMP is the combination of Linux + Apache + MySQL + PHP (PHP/PERL/Python).

Linux is a free Unix-type operating system originally created by Linus Torvalds with the assistance of developers around the world. Developed under the GNU General Public License , the source code for Linux is freely available to everyone.

Apache is the most popular web server on the net. It is very secure, fast, and reliable.
MySQL is the fastest RDBMS in the world. It is very good for web based applications as well.

PHP is an open source project of the Apache Software Foundation. It is a powerful server-side scripting language for creating dynamic and interactive websites. PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft’s ASP. PHP is used mainly in server-side scripting, but can be used from a command line interface or in standalone graphical applications. Textual User Interfaces can also be created using ncurses. PHP is a recursive initialism for PHP: Hypertext Preprocessor. PHP is perfectly suited for Web development and can be embedded directly into the HTML code. The PHP syntax is very similar to Perl and C. PHP is often used together with Apache (web server) on various operating systems. It also supports ISAPI and can be used with Microsoft’s IIS on Windows.



Kohana looks better…

Kohana PHP Framwork

  • Kohana is exclusively for PHP 5 while Code Igniter supports from PHP 4 and up. Kohana is strinctly OOP with benefits like visibility protection, automatic class loading, overloading, interfaces, abstracts, and singletons.
  • Code Igniter supports only $POST arrays and no GET, Kohana lets POST and GET arrays live together in harmony with the same tight security of Code Igniter.
  • Kohana’s directory structure makes a lot more sense. See, Code Igniter has one directory at the root called System. In this directory is a bunch of subdirectories of which your application directory is a part of. Kohana went and put the application directory with the system directory on the root path.
  • But Kohana is lacking in Documentation, UserBase, CodeBase, CI is having few publish booked from Wrox and Oriliy. From Hiring point of view, Developer are more in CI but we can trained them for Kohana.

CI is ahead because of following main reasons

  • Nice Documentation
  • Books Available
  • Experienced and Trained Resources Available
  • Stable