<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>satishgaudo.com &#187; PHP</title>
	<atom:link href="http://satishgaudo.com/satblog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://satishgaudo.com/satblog</link>
	<description>Understanding technology</description>
	<lastBuildDate>Thu, 26 Aug 2010 06:27:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Detailed Guide On Arrays In PHP</title>
		<link>http://satishgaudo.com/satblog/2010/05/07/detailed-guide-on-arrays-in-php/</link>
		<comments>http://satishgaudo.com/satblog/2010/05/07/detailed-guide-on-arrays-in-php/#comments</comments>
		<pubDate>Fri, 07 May 2010 05:43:13 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Detailed Guide On Arrays In PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=193</guid>
		<description><![CDATA[
			
				
			
		
Here is an link from digg.com, detailed guide on arrays in php
Detailed Guide On Arrays In PHP
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F05%2F07%2Fdetailed-guide-on-arrays-in-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F05%2F07%2Fdetailed-guide-on-arrays-in-php%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Here is an link from digg.com, detailed guide on arrays in php</p>
<p><a class="wp-caption" title="Detailed Guide On Arrays In PHP" href="http://digg.com/d35Wvg" target="_blank"><span style="text-decoration: underline;"><span style="color: #ff0000;">Detailed Guide On Arrays In PHP</span></span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2010/05/07/detailed-guide-on-arrays-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script to Generate an array of hierarchical node tree</title>
		<link>http://satishgaudo.com/satblog/2010/05/06/script-to-generate-an-array-of-hierarchical-node-tree/</link>
		<comments>http://satishgaudo.com/satblog/2010/05/06/script-to-generate-an-array-of-hierarchical-node-tree/#comments</comments>
		<pubDate>Thu, 06 May 2010 09:14:14 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[hierarchical node tree]]></category>
		<category><![CDATA[Script to Generate an array of hierarchical node tree]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=184</guid>
		<description><![CDATA[
			
				
			
		
Consider the file &#8220;list.txt&#8221; below containing two columns
parent id and child id separated by &#8220;space&#8221; on each row
That is the source for data for computation:
list.txt
0 1
1 2
2 3
0 4
4 5
0 6
6 7
Below is the script for getting an array of the hierachical node tree
tree.php
&#60;?
$l = file(&#8221;./list.txt&#8221;);
 
$list = array();
 
for ($i = 0;$i &#60; count($l); [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F05%2F06%2Fscript-to-generate-an-array-of-hierarchical-node-tree%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F05%2F06%2Fscript-to-generate-an-array-of-hierarchical-node-tree%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Consider the file &#8220;list.txt&#8221; below containing two columns<br />
parent id and child id separated by &#8220;space&#8221; on each row</p>
<p>That is the source for data for computation:</p>
<p><strong>list.txt</strong></p>
<pre><span style="color: #ff0000;">0 1
1 2
2 3
0 4
4 5
0 6
6 7</span></pre>
<p>Below is the script for getting an array of the hierachical node tree</p>
<p><span style="color: #ff9900;"><strong>tree.php</strong></span></p>
<p><span style="color: #000000;">&lt;?</span></p>
<p><span style="color: #000000;">$l = file(&#8221;./list.txt&#8221;);</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">$list = array();</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">for ($i = 0;$i &lt; count($l); $i++)</span></p>
<p><span style="color: #000000;">{</span></p>
<p><span style="color: #000000;"> list($list[$i][parent],$list[$i][child]) = explode(&#8221; &#8220;,trim($l[$i]));</span></p>
<p><span style="color: #000000;">}</span></p>
<p><span style="color: #000000;">$list = getChildList($list);</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">$tree = getNodeTree();</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">print_R($tree);</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">function getChildList($list) {</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;"> $normList = array();</span></p>
<p><span style="color: #000000;"> for ($i = 0;$i &lt; count($list); $i++)</span></p>
<p><span style="color: #000000;"> {</span></p>
<p><span style="color: #000000;"> $normList[$list[$i][parent]][] = $list[$i][child];</span></p>
<p><span style="color: #000000;"> }</span></p>
<p><span style="color: #000000;"> return $normList;</span></p>
<p><span style="color: #000000;">}</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">function getNodeTree($child=0) {</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;"> global $list;</span></p>
<p><span style="color: #000000;"> if (count($list[$child])==0) {</span></p>
<p><span style="color: #000000;"> return;</span></p>
<p><span style="color: #000000;"> }</span></p>
<p><span style="color: #000000;"> foreach ($list[$child] as $k=&gt;$v)</span></p>
<p><span style="color: #000000;"> {</span></p>
<p><span style="color: #000000;"> $tree[$v] = getNodeTree($v);</span></p>
<p><span style="color: #000000;"> }</span></p>
<p><span style="color: #000000;"> return $tree;</span></p>
<p><span style="color: #000000;">}</span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;"> </span></p>
<p><span style="color: #000000;">?&gt;</p>
<p></span></p>
<h4><span style="color: #000000;"></p>
<p></span></h4>
<p><strong>Output of the script:</strong></p>
<pre><span style="color: #993300;">Array
(
    [1] =&gt; Array
        (
            [2] =&gt; Array
                (
                    [3] =&gt;
                )

        )

    [4] =&gt; Array
        (
            [5] =&gt;
        )

    [6] =&gt; Array
        (
            [7] =&gt;
        )

)</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2010/05/06/script-to-generate-an-array-of-hierarchical-node-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Regular Expressions:Examples</title>
		<link>http://satishgaudo.com/satblog/2010/04/26/regular-expressionsexamples/</link>
		<comments>http://satishgaudo.com/satblog/2010/04/26/regular-expressionsexamples/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 10:01:07 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Regular Expressions]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=177</guid>
		<description><![CDATA[
			
				
			
		

  * .at matches any three-character string ending with "at",
      including "hat", "cat", and "bat".
  * [hc]at matches "hat" and "cat".
  * [^b]at matches all strings matched by .at except "bat".
  * ^[hc]at matches "hat" and "cat", but only at the beginning
     [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F04%2F26%2Fregular-expressionsexamples%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F04%2F26%2Fregular-expressionsexamples%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<pre >
  * .at matches any three-character string ending with "at",<br />
      including "hat", "cat", and "bat".</p>
<p>  * [hc]at matches "hat" and "cat".</p>
<p>  * [^b]at matches all strings matched by .at except "bat".</p>
<p>  * ^[hc]at matches "hat" and "cat", but only at the beginning<br />
     of the string or line.</p>
<p>  * [hc]at$ matches "hat" and "cat", but only at the end<br />
     of the string or line.</p>
<p>  * \[.\] matches any single character surrounded by "[" and "]"<br />
       since the brackets are escaped, for      example: "[a]" and "[b]".</p>
<p>  * [hc]+at matches "hat", "cat", "hhat", "chat", "hcat",<br />
       "ccchat", and so on, but not "at".</p>
<p>  * [hc]?at matches "hat", "cat", and "at".</p>
<p>  * [hc]*at matches "hat", "cat", "hhat", "chat", "hcat", "ccchat",<br />
       "at", and so on.</p>
<p>  * cat|dog matches "cat" or "dog".
</pre >
   For detail explanation: <a href="http://en.wikipedia.org/wiki/Regular_expression">http://en.wikipedia.org/wiki/Regular_expression</a></p>
]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2010/04/26/regular-expressionsexamples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use array_walk function in class</title>
		<link>http://satishgaudo.com/satblog/2010/03/24/how-to-use-array_walk-function-in-class/</link>
		<comments>http://satishgaudo.com/satblog/2010/03/24/how-to-use-array_walk-function-in-class/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 10:53:11 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[array_walk function in class]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=160</guid>
		<description><![CDATA[
			
				
			
		
In the example below dbop is an test class:
class dbop {
	$aUpdateData=Array();
	public function createOnDupUpdateString($val,$key){
		$this->aUpdateData[$key]=$val;
	}
	public function insertOrUpdOndupKey($aUpdate) {
		array_walk($aUpdate, array($this, &#8216;createOnDupUpdateString&#8217;)); // create new array.
	}
}
In the function &#8220;insertOrUpdOndupKey&#8221; for each element of array update function &#8220;createOnDupUpdateString&#8221; is
applied using &#8220;array_walk&#8221;.
For the function array_walk, pass the source array ($aUpdate) as first parameter and pass array of class object
&#8220;$this&#8221; and name [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F03%2F24%2Fhow-to-use-array_walk-function-in-class%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2010%2F03%2F24%2Fhow-to-use-array_walk-function-in-class%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>In the example below dbop is an test class:</p>
<p>class dbop {<br />
	$aUpdateData=Array();</p>
<p>	public function createOnDupUpdateString($val,$key){<br />
		$this->aUpdateData[$key]=$val;<br />
	}</p>
<p>	public function insertOrUpdOndupKey($aUpdate) {<br />
		array_walk($aUpdate, array($this, &#8216;createOnDupUpdateString&#8217;)); // create new array.<br />
	}<br />
}</p>
<p>In the function &#8220;insertOrUpdOndupKey&#8221; for each element of array update function &#8220;createOnDupUpdateString&#8221; is<br />
applied using &#8220;array_walk&#8221;.</p>
<p>For the function array_walk, pass the source array ($aUpdate) as first parameter and pass array of class object<br />
&#8220;$this&#8221; and name of the function to be applied &#8220;createOnDupUpdateString&#8221; as second parameter.</p>
]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2010/03/24/how-to-use-array_walk-function-in-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>glob — Find pathnames matching a pattern</title>
		<link>http://satishgaudo.com/satblog/2009/10/27/glob-%e2%80%94-find-pathnames-matching-a-pattern/</link>
		<comments>http://satishgaudo.com/satblog/2009/10/27/glob-%e2%80%94-find-pathnames-matching-a-pattern/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 06:54:12 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=118</guid>
		<description><![CDATA[
			
				
			
		
$aDir = glob(&#8221;/clt20/uploads/videos/*.flv&#8221;);
The glob() function searches for all the pathnames matching pattern  according to the rules used by the libc glob() function, which is similar to the rules used by common shells. 
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F10%2F27%2Fglob-%25e2%2580%2594-find-pathnames-matching-a-pattern%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F10%2F27%2Fglob-%25e2%2580%2594-find-pathnames-matching-a-pattern%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>$aDir = glob(&#8221;/clt20/uploads/videos/*.flv&#8221;);</p>
<p>The glob() function searches for all the pathnames matching pattern  according to the rules used by the libc glob() function, which is similar to the rules used by common shells. </p>
]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/10/27/glob-%e2%80%94-find-pathnames-matching-a-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memcached: high-performance, distributed memory object caching system</title>
		<link>http://satishgaudo.com/satblog/2009/06/25/memcached-high-performance-distributed-memory-object-caching-system/</link>
		<comments>http://satishgaudo.com/satblog/2009/06/25/memcached-high-performance-distributed-memory-object-caching-system/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 15:00:52 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/2009/06/25/memcached-high-performance-distributed-memory-object-caching-system/</guid>
		<description><![CDATA[
			
				
			
		
memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.memcached drop the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.For more details [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F25%2Fmemcached-high-performance-distributed-memory-object-caching-system%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F25%2Fmemcached-high-performance-distributed-memory-object-caching-system%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>memcached is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.memcached drop the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.For more details log on to : http://in.php.net/manual/en/book.memcache.php&#8221;</p>
<p>Here is the memcache class:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">class Cache
<span class="br0">&#123;</span>
/**
* Resources of the opend memcached connections
* @var array <span class="br0">&#91;</span>memcache objects<span class="br0">&#93;</span>
*/
var $mc_servers = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
/**
* Quantity of servers used
* @var int
*/
var $mc_servers_count;
&nbsp;
var $servers = array<span class="br0">&#40;</span>
//array of memcache servers
array<span class="br0">&#40;</span>'192.168.0.217'=&gt;'<span style="">11211</span>'<span class="br0">&#41;</span>
&nbsp;
<span class="br0">&#41;</span>;
/**
* Accepts the <span style="">2</span>-d array with details of memcached servers
*
* @param array $servers
*/
var $memObj;
function Cache<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
$this-&gt;memObj = new Memcache;
if<span class="br0">&#40;</span>$this-&gt;memObj === false<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return false;
<span class="br0">&#125;</span>
foreach<span class="br0">&#40;</span>$this-&gt;servers as $key=&gt;$val<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
$this-&gt;memObj-&gt;addServer<span class="br0">&#40;</span>key<span class="br0">&#40;</span>$val<span class="br0">&#41;</span>,current<span class="br0">&#40;</span>$val<span class="br0">&#41;</span>,false,<span style="">1</span>,<span style="">1</span>,-<span style="">1</span>,TRUE<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
/**
* Clear the cache
*
* @return void
*/
function flush<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
$this-&gt;memObj-&gt;flush<span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
/**
* Returns the value stored in the memory by it's key
*
* @param string $key
* @return mix
*/
function get<span class="br0">&#40;</span>$key<span class="br0">&#41;</span> <span class="br0">&#123;</span>
if <span class="br0">&#40;</span>is_array<span class="br0">&#40;</span>$key<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
$dest = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
foreach <span class="br0">&#40;</span>$key as $subkey<span class="br0">&#41;</span> <span class="br0">&#123;</span>
$val = $this-&gt;memObj-&gt;get<span class="br0">&#40;</span>$subkey<span class="br0">&#41;</span>;
if <span class="br0">&#40;</span>!<span class="br0">&#40;</span>$val === false<span class="br0">&#41;</span><span class="br0">&#41;</span> $dest<span class="br0">&#91;</span>$subkey<span class="br0">&#93;</span> = $val;
<span class="br0">&#125;</span>
return $dest;
<span class="br0">&#125;</span> else <span class="br0">&#123;</span>
&nbsp;
return $this-&gt;memObj-&gt;get<span class="br0">&#40;</span>$key<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
/**
* Store the value in the memcache memory <span class="br0">&#40;</span>overwrite if key exists<span class="br0">&#41;</span>
*
* @param string $key
* @param mix $var
* @param bool $compress
* @param int $expire <span class="br0">&#40;</span>seconds before item expires<span class="br0">&#41;</span>
* @return bool
*/
function set<span class="br0">&#40;</span>$key, $var, $compress=<span style="">0</span>, $expire=<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;set<span class="br0">&#40;</span>$key, $var, $compress?MEMCACHE_COMPRESSED:null, $expire<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
/**
* Set the value in memcache if the value does not exist; returns FALSE if value exists
*
* @param sting $key
* @param mix $var
* @param bool $compress
* @param int $expire
* @return bool
*/
function add<span class="br0">&#40;</span>$key, $var, $compress=<span style="">0</span>, $expire=<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;add<span class="br0">&#40;</span>$key, $var, $compress?MEMCACHE_COMPRESSED:null, $expire<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
/**
* Replace an existing value
*
* @param string $key
* @param mix $var
* @param bool $compress
* @param int $expire
* @return bool
*/
function replace<span class="br0">&#40;</span>$key, $var, $compress=<span style="">0</span>, $expire=<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;replace<span class="br0">&#40;</span>$key, $var, $compress?MEMCACHE_COMPRESSED:null, $expire<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
/**
* Delete a record or set a timeout
*
* @param string $key
* @param int $timeout
* @return bool
*/
function delete<span class="br0">&#40;</span>$key, $timeout=<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;delete<span class="br0">&#40;</span>$key, $timeout<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
/**
* Increment an existing integer value
*
* @param string $key
* @param mix $value
* @return bool
*/
function increment<span class="br0">&#40;</span>$key, $value=<span style="">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;increment<span class="br0">&#40;</span>$key, $value<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
/**
* Decrement an existing value
*
* @param string $key
* @param mix $value
* @return bool
*/
function decrement<span class="br0">&#40;</span>$key, $value=<span style="">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>$this-&gt;memObj<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
return $this-&gt;memObj-&gt;decrement<span class="br0">&#40;</span>$key, $value<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span>
//class end
<span class="br0">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/06/25/memcached-high-performance-distributed-memory-object-caching-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wrapper class for curl</title>
		<link>http://satishgaudo.com/satblog/2009/06/16/wrapper-class-for-curlsatish-gaudo-php-curl-class/</link>
		<comments>http://satishgaudo.com/satblog/2009/06/16/wrapper-class-for-curlsatish-gaudo-php-curl-class/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:26:05 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=12</guid>
		<description><![CDATA[
			
				
			
		

/**
 *cURL class
 * This is a wrapper class for curl
 * $c = new curl;
 * // enable cache
 * $c = new curl&#40;array&#40;'cache'=&#62;true&#41;&#41;;
 * // enable cookie
 * $c = new curl&#40;array&#40;'cookie'=&#62;true&#41;&#41;;
 * // enable proxy
 * $c = new curl&#40;array&#40;'proxy'=&#62;true&#41;&#41;;
 *
 * // HTTP GET Method
 * $html = $c-&#62;get&#40;'http://example.com'&#41;;
 * // [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Fwrapper-class-for-curlsatish-gaudo-php-curl-class%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Fwrapper-class-for-curlsatish-gaudo-php-curl-class%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">/**
 *cURL class
 * This is a wrapper class for curl
 * $c = new curl;
 * // enable cache
 * $c = new curl<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'cache'=&gt;true<span class="br0">&#41;</span><span class="br0">&#41;</span>;
 * // enable cookie
 * $c = new curl<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'cookie'=&gt;true<span class="br0">&#41;</span><span class="br0">&#41;</span>;
 * // enable proxy
 * $c = new curl<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'proxy'=&gt;true<span class="br0">&#41;</span><span class="br0">&#41;</span>;
 *
 * // HTTP GET Method
 * $html = $c-&gt;get<span class="br0">&#40;</span>'http://example.com'<span class="br0">&#41;</span>;
 * // HTTP POST Method
 * $html = $c-&gt;post<span class="br0">&#40;</span>'http://example.com/', array<span class="br0">&#40;</span>'q'=&gt;'words', 'name'=&gt;'moodle'<span class="br0">&#41;</span><span class="br0">&#41;</span>;
 * // HTTP PUT Method
 * $html = $c-&gt;put<span class="br0">&#40;</span>'http://example.com/', array<span class="br0">&#40;</span>'file'=&gt;'/var/www/test.txt'<span class="br0">&#41;</span>;
 *
 */
class curl <span class="br0">&#123;</span>
    public  $cache    = false;
    public  $proxy    = false;
    public  $version  = '<span style="">0.4</span> dev';
    public  $response = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    public  $header   = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
    public  $info;
    public  $error;
&nbsp;
    private $options;
    private $proxy_host = '';
    private $proxy_auth = '';
    private $proxy_type = '';
    private $debug    = false;
    private $cookie   = false;
&nbsp;
    public function __construct<span class="br0">&#40;</span>$options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        global $CFG;
        if <span class="br0">&#40;</span>!function_exists<span class="br0">&#40;</span>'curl_init'<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $this-&gt;error = 'cURL module must be enabled!';
            trigger_error<span class="br0">&#40;</span>$this-&gt;error, E_USER_ERROR<span class="br0">&#41;</span>;
            return false;
        <span class="br0">&#125;</span>
        // the options of curl should be init here.
        $this-&gt;resetopt<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'debug'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $this-&gt;debug = true;
        <span class="br0">&#125;</span>
        if<span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'cookie'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'cookie'<span class="br0">&#93;</span> === true<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $this-&gt;cookie = $CFG-&gt;dataroot.'/curl_cookie.txt';
            <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                $this-&gt;cookie = $options<span class="br0">&#91;</span>'cookie'<span class="br0">&#93;</span>;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'cache'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if <span class="br0">&#40;</span>class_exists<span class="br0">&#40;</span>'repository_cache'<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $this-&gt;cache = new repository_cache;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'proxy'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$CFG-&gt;proxyhost<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                if <span class="br0">&#40;</span>empty<span class="br0">&#40;</span>$CFG-&gt;proxyport<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    $this-&gt;proxy_host = $CFG-&gt;proxyhost;
                <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                    $this-&gt;proxy_host = $CFG-&gt;proxyhost.':'.$CFG-&gt;proxyport;
                <span class="br0">&#125;</span>
                if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$CFG-&gt;proxyuser<span class="br0">&#41;</span> and !empty<span class="br0">&#40;</span>$CFG-&gt;proxypassword<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    $this-&gt;proxy_auth = $CFG-&gt;proxyuser.':'.$CFG-&gt;proxypassword;
                    $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>
                                'proxyauth'=&gt; CURLAUTH_BASIC | CURLAUTH_NTLM,
                                'proxyuserpwd'=&gt;$this-&gt;proxy_auth<span class="br0">&#41;</span><span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>
                if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$CFG-&gt;proxytype<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    if <span class="br0">&#40;</span>$CFG-&gt;proxytype == 'SOCKS5'<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        $this-&gt;proxy_type = CURLPROXY_SOCKS5;
                    <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                        $this-&gt;proxy_type = CURLPROXY_HTTP;
                        $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'httpproxytunnel'=&gt;true<span class="br0">&#41;</span><span class="br0">&#41;</span>;
                    <span class="br0">&#125;</span>
                    $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'proxytype'=&gt;$this-&gt;proxy_type<span class="br0">&#41;</span><span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$this-&gt;proxy_host<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $this-&gt;proxy = array<span class="br0">&#40;</span>'proxy'=&gt;$this-&gt;proxy_host<span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    public function resetopt<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $this-&gt;options = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_USERAGENT'<span class="br0">&#93;</span>         = 'MoodleBot/<span style="">1.0</span>';
        // True to include the header in the output
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_HEADER'<span class="br0">&#93;</span>            = <span style="">0</span>;
        // True to Exclude the body from the output
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_NOBODY'<span class="br0">&#93;</span>            = <span style="">0</span>;
        // TRUE to follow any &quot;Location: &quot; header that the server
        // sends as part of the HTTP header <span class="br0">&#40;</span>note this is recursive,
        // PHP will follow as many &quot;Location: &quot; headers that it is sent,
        // unless CURLOPT_MAXREDIRS is set<span class="br0">&#41;</span>.
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_FOLLOWLOCATION'<span class="br0">&#93;</span>    = <span style="">1</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_MAXREDIRS'<span class="br0">&#93;</span>         = <span style="">10</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_ENCODING'<span class="br0">&#93;</span>          = '';
        // TRUE to return the transfer as a string of the return
        // value of curl_exec<span class="br0">&#40;</span><span class="br0">&#41;</span> instead of outputting it out directly.
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_RETURNTRANSFER'<span class="br0">&#93;</span>    = <span style="">1</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_BINARYTRANSFER'<span class="br0">&#93;</span>    = <span style="">0</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_SSL_VERIFYPEER'<span class="br0">&#93;</span>    = <span style="">0</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_SSL_VERIFYHOST'<span class="br0">&#93;</span>    = <span style="">2</span>;
        $this-&gt;options<span class="br0">&#91;</span>'CURLOPT_TIMEOUT'<span class="br0">&#93;</span>           = <span style="">120</span>;
    <span class="br0">&#125;</span>
    /**
     * Reset Cookie
     *
     * @param array $options If array is null, this function will
     * reset the options to default value.
     *
     */
    public function resetcookie<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$this-&gt;cookie<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if <span class="br0">&#40;</span>is_file<span class="br0">&#40;</span>$this-&gt;cookie<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $fp = fopen<span class="br0">&#40;</span>$this-&gt;cookie, 'w'<span class="br0">&#41;</span>;
                if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    fwrite<span class="br0">&#40;</span>$fp, ''<span class="br0">&#41;</span>;
                    fclose<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    /**
     * Set curl options
     * @param array $options If array is null, this function will
     * reset the options to default value.
     *
     */
    public function setopt<span class="br0">&#40;</span>$options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        if <span class="br0">&#40;</span>is_array<span class="br0">&#40;</span>$options<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            foreach<span class="br0">&#40;</span>$options as $name =&gt; $val<span class="br0">&#41;</span><span class="br0">&#123;</span>
                if <span class="br0">&#40;</span>stripos<span class="br0">&#40;</span>$name, 'CURLOPT_'<span class="br0">&#41;</span> === false<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    $name = strtoupper<span class="br0">&#40;</span>'CURLOPT_'.$name<span class="br0">&#41;</span>;
                <span class="br0">&#125;</span>
                $this-&gt;options<span class="br0">&#91;</span>$name<span class="br0">&#93;</span> = $val;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    /**
     * Reset http method
     *
     */
    public function cleanopt<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_HTTPGET'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_POST'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_POSTFIELDS'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_PUT'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_INFILE'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_INFILESIZE'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        unset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_CUSTOMREQUEST'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
    /**
     * Set HTTP Request Header
     *
     * @param array $headers
     *
     */
    public function setHeader<span class="br0">&#40;</span>$header<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        if <span class="br0">&#40;</span>is_array<span class="br0">&#40;</span>$header<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            foreach <span class="br0">&#40;</span>$header as $v<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $this-&gt;setHeader<span class="br0">&#40;</span>$v<span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
            $this-&gt;header<span class="br0">&#91;</span><span class="br0">&#93;</span> = $header;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    /**
     * Set HTTP Response Header
     *
     */
    public function getResponse<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        return $this-&gt;response;
    <span class="br0">&#125;</span>
    /**
     * private callback function
     * Formatting HTTP Response Header
     *
     */
    private function formatHeader<span class="br0">&#40;</span>$ch, $header<span class="br0">&#41;</span>
    <span class="br0">&#123;</span>
        $this-&gt;count++;
        if <span class="br0">&#40;</span>strlen<span class="br0">&#40;</span>$header<span class="br0">&#41;</span> &gt; <span style="">2</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            list<span class="br0">&#40;</span>$key, $value<span class="br0">&#41;</span> = explode<span class="br0">&#40;</span>&quot; &quot;, rtrim<span class="br0">&#40;</span>$header, &quot;\r\n&quot;<span class="br0">&#41;</span>, <span style="">2</span><span class="br0">&#41;</span>;
            $key = rtrim<span class="br0">&#40;</span>$key, ':'<span class="br0">&#41;</span>;
            if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                if <span class="br0">&#40;</span>is_array<span class="br0">&#40;</span>$this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                    $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = $value;
                <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                    $tmp = $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span>;
                    $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span> = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
                    $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = $tmp;
                    $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span> = $value;
&nbsp;
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                $this-&gt;response<span class="br0">&#91;</span>$key<span class="br0">&#93;</span> = $value;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        return strlen<span class="br0">&#40;</span>$header<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
    /**
     * Set options for individual curl instance
     */
    private function apply_opt<span class="br0">&#40;</span>$curl, $options<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        // Clean up
        $this-&gt;cleanopt<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        // set cookie
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$this-&gt;cookie<span class="br0">&#41;</span> || !empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'cookie'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'cookiejar'=&gt;$this-&gt;cookie,
                            'cookiefile'=&gt;$this-&gt;cookie
                             <span class="br0">&#41;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        // set proxy
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$this-&gt;proxy<span class="br0">&#41;</span> || !empty<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'proxy'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $this-&gt;setopt<span class="br0">&#40;</span>$this-&gt;proxy<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        $this-&gt;setopt<span class="br0">&#40;</span>$options<span class="br0">&#41;</span>;
        // reset before set options
        curl_setopt<span class="br0">&#40;</span>$curl, CURLOPT_HEADERFUNCTION, array<span class="br0">&#40;</span>&amp;$this,'formatHeader'<span class="br0">&#41;</span><span class="br0">&#41;</span>;
        // set headers
        if <span class="br0">&#40;</span>empty<span class="br0">&#40;</span>$this-&gt;header<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            $this-&gt;setHeader<span class="br0">&#40;</span>array<span class="br0">&#40;</span>
                'User-Agent: MoodleBot/<span style="">1.0</span>',
                'Accept-Charset: ISO-<span style="">8859</span>-<span style="">1</span>,utf-<span style="">8</span>;q=<span style="">0.7</span>,*;q=<span style="">0.7</span>',
                'Connection: keep-alive'
                <span class="br0">&#41;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        curl_setopt<span class="br0">&#40;</span>$curl, CURLOPT_HTTPHEADER, $this-&gt;header<span class="br0">&#41;</span>;
&nbsp;
        if <span class="br0">&#40;</span>$this-&gt;debug<span class="br0">&#41;</span><span class="br0">&#123;</span>
            echo '&lt;h1&gt;Options&lt;/h1&gt;';
            var_dump<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#41;</span>;
            echo '&lt;h1&gt;Header&lt;/h1&gt;';
            var_dump<span class="br0">&#40;</span>$this-&gt;header<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
&nbsp;
        // set options
        foreach<span class="br0">&#40;</span>$this-&gt;options as $name =&gt; $val<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if <span class="br0">&#40;</span>is_string<span class="br0">&#40;</span>$name<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $name = constant<span class="br0">&#40;</span>strtoupper<span class="br0">&#40;</span>$name<span class="br0">&#41;</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
            curl_setopt<span class="br0">&#40;</span>$curl, $name, $val<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        return $curl;
    <span class="br0">&#125;</span>
    /*
     * Download multiple files in parallel
     * $c = new curl;
     * $c-&gt;download<span class="br0">&#40;</span>array<span class="br0">&#40;</span>
     *              array<span class="br0">&#40;</span>'url'=&gt;'http://localhost/', 'file'=&gt;fopen<span class="br0">&#40;</span>'a', 'wb'<span class="br0">&#41;</span><span class="br0">&#41;</span>, 
     *              array<span class="br0">&#40;</span>'url'=&gt;'http://localhost/<span style="">20</span>/', 'file'=&gt;fopen<span class="br0">&#40;</span>'b', 'wb'<span class="br0">&#41;</span><span class="br0">&#41;</span>
     *              <span class="br0">&#41;</span><span class="br0">&#41;</span>;
     */
    public function download<span class="br0">&#40;</span>$requests, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        $options<span class="br0">&#91;</span>'CURLOPT_BINARYTRANSFER'<span class="br0">&#93;</span> = <span style="">1</span>;
        $options<span class="br0">&#91;</span>'RETURNTRANSFER'<span class="br0">&#93;</span> = false;
        return $this-&gt;multi<span class="br0">&#40;</span>$requests, $options<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
    /*
     * Mulit HTTP Requests
     * This function could run multi-requests in parallel.
     */
    protected function multi<span class="br0">&#40;</span>$requests, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        $count   = count<span class="br0">&#40;</span>$requests<span class="br0">&#41;</span>;
        $handles = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        $results = array<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        $main    = curl_multi_init<span class="br0">&#40;</span><span class="br0">&#41;</span>;
        for <span class="br0">&#40;</span>$i = <span style="">0</span>; $i &lt; $count; $i++<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $url = $requests<span class="br0">&#91;</span>$i<span class="br0">&#93;</span>;
            foreach<span class="br0">&#40;</span>$url as $n=&gt;$v<span class="br0">&#41;</span><span class="br0">&#123;</span>
                $options<span class="br0">&#91;</span>$n<span class="br0">&#93;</span> = $url<span class="br0">&#91;</span>$n<span class="br0">&#93;</span>;
            <span class="br0">&#125;</span>
            $handles<span class="br0">&#91;</span>$i<span class="br0">&#93;</span> = curl_init<span class="br0">&#40;</span>$url<span class="br0">&#91;</span>'url'<span class="br0">&#93;</span><span class="br0">&#41;</span>;
            $this-&gt;apply_opt<span class="br0">&#40;</span>$handles<span class="br0">&#91;</span>$i<span class="br0">&#93;</span>, $options<span class="br0">&#41;</span>;
            curl_multi_add_handle<span class="br0">&#40;</span>$main, $handles<span class="br0">&#91;</span>$i<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        $running = <span style="">0</span>;
        do <span class="br0">&#123;</span>
            curl_multi_exec<span class="br0">&#40;</span>$main, $running<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span> while<span class="br0">&#40;</span>$running &gt; <span style="">0</span><span class="br0">&#41;</span>;
        for <span class="br0">&#40;</span>$i = <span style="">0</span>; $i &lt; $count; $i++<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$optins<span class="br0">&#91;</span>'CURLOPT_RETURNTRANSFER'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $results<span class="br0">&#91;</span><span class="br0">&#93;</span> = true;
            <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
                $results<span class="br0">&#91;</span><span class="br0">&#93;</span> = curl_multi_getcontent<span class="br0">&#40;</span>$handles<span class="br0">&#91;</span>$i<span class="br0">&#93;</span><span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
            curl_multi_remove_handle<span class="br0">&#40;</span>$main, $handles<span class="br0">&#91;</span>$i<span class="br0">&#93;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        curl_multi_close<span class="br0">&#40;</span>$main<span class="br0">&#41;</span>;
        return $results;
    <span class="br0">&#125;</span>
    /**
     * Single HTTP Request
     */
    protected function request<span class="br0">&#40;</span>$url, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        // create curl instance
        $curl = curl_init<span class="br0">&#40;</span>$url<span class="br0">&#41;</span>;
        $options<span class="br0">&#91;</span>'url'<span class="br0">&#93;</span> = $url;
        $this-&gt;apply_opt<span class="br0">&#40;</span>$curl, $options<span class="br0">&#41;</span>;
        if <span class="br0">&#40;</span>$this-&gt;cache &amp;&amp; $ret = $this-&gt;cache-&gt;get<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            return $ret;
        <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
            $ret  = curl_exec<span class="br0">&#40;</span>$curl<span class="br0">&#41;</span>;
            if <span class="br0">&#40;</span>$this-&gt;cache<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                $this-&gt;cache-&gt;set<span class="br0">&#40;</span>$this-&gt;options, $ret<span class="br0">&#41;</span>;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
        $this-&gt;info  = curl_getinfo<span class="br0">&#40;</span>$curl<span class="br0">&#41;</span>;
        $this-&gt;error = curl_error<span class="br0">&#40;</span>$curl<span class="br0">&#41;</span>;
        if <span class="br0">&#40;</span>$this-&gt;debug<span class="br0">&#41;</span><span class="br0">&#123;</span>
            echo '&lt;h1&gt;Return Data&lt;/h1&gt;';
            var_dump<span class="br0">&#40;</span>$ret<span class="br0">&#41;</span>;
            echo '&lt;h1&gt;Info&lt;/h1&gt;';
            var_dump<span class="br0">&#40;</span>$this-&gt;info<span class="br0">&#41;</span>;
            echo '&lt;h1&gt;Error&lt;/h1&gt;';
            var_dump<span class="br0">&#40;</span>$this-&gt;error<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        curl_close<span class="br0">&#40;</span>$curl<span class="br0">&#41;</span>;
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$ret<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            return $ret;
        <span class="br0">&#125;</span> else <span class="br0">&#123;</span>
            return false;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    /**
     * HTTP HEAD method
     */
    public function head<span class="br0">&#40;</span>$url, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $options<span class="br0">&#91;</span>'CURLOPT_HTTPGET'<span class="br0">&#93;</span> = <span style="">0</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_HEADER'<span class="br0">&#93;</span>  = <span style="">1</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_NOBODY'<span class="br0">&#93;</span>  = <span style="">1</span>;
        return $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
    /**
     * HTTP POST method
     */
    public function post<span class="br0">&#40;</span>$url, $params = array<span class="br0">&#40;</span><span class="br0">&#41;</span>, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        //$options<span class="br0">&#91;</span>'CURLOPT_POST'<span class="br0">&#93;</span>       = <span style="">1</span>;
        //$options<span class="br0">&#91;</span>'CURLOPT_POSTFIELDS'<span class="br0">&#93;</span> = $params;
        //return $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
        $file = $params<span class="br0">&#91;</span>'file'<span class="br0">&#93;</span>;
        if <span class="br0">&#40;</span>!is_file<span class="br0">&#40;</span>$file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            return null;
        <span class="br0">&#125;</span>
        $fp   = fopen<span class="br0">&#40;</span>$file, 'r'<span class="br0">&#41;</span>;
        $size = filesize<span class="br0">&#40;</span>$file<span class="br0">&#41;</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_CUSTOMREQUEST'<span class="br0">&#93;</span> = 'POST';
        $options<span class="br0">&#91;</span>'CURLOPT_UPLOAD'<span class="br0">&#93;</span> = <span style="">1</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILESIZE'<span class="br0">&#93;</span> = $size;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILE'<span class="br0">&#93;</span>     = $fp;
        if <span class="br0">&#40;</span>!isset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_USERPWD'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'CURLOPT_USERPWD'=&gt;'anonymous: satishgaude@gmail.com'<span class="br0">&#41;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        $ret = $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
        fclose<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span>;
        return $ret;
    <span class="br0">&#125;</span>
    /**
     * HTTP GET method
     */
    public function get<span class="br0">&#40;</span>$url, $params = array<span class="br0">&#40;</span><span class="br0">&#41;</span>, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $options<span class="br0">&#91;</span>'CURLOPT_HTTPGET'<span class="br0">&#93;</span> = <span style="">1</span>;
        if <span class="br0">&#40;</span>!empty<span class="br0">&#40;</span>$params<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            $url .= <span class="br0">&#40;</span>stripos<span class="br0">&#40;</span>$url, '?'<span class="br0">&#41;</span> !== false<span class="br0">&#41;</span> ? '&amp;' : '?';
            $url .= http_build_query<span class="br0">&#40;</span>$params, '', '&amp;'<span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        return $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
    <span class="br0">&#125;</span>
    /**
     * HTTP PUT method
     */
    public function put<span class="br0">&#40;</span>$url, $params = array<span class="br0">&#40;</span><span class="br0">&#41;</span>, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $file = $params<span class="br0">&#91;</span>'file'<span class="br0">&#93;</span>;
        if <span class="br0">&#40;</span>!is_file<span class="br0">&#40;</span>$file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            return null;
        <span class="br0">&#125;</span>
        $fp   = fopen<span class="br0">&#40;</span>$file, 'r'<span class="br0">&#41;</span>;
        $size = filesize<span class="br0">&#40;</span>$file<span class="br0">&#41;</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_PUT'<span class="br0">&#93;</span>        = <span style="">1</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILESIZE'<span class="br0">&#93;</span> = $size;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILE'<span class="br0">&#93;</span>     = $fp;
        if <span class="br0">&#40;</span>!isset<span class="br0">&#40;</span>$this-&gt;options<span class="br0">&#91;</span>'CURLOPT_USERPWD'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            $this-&gt;setopt<span class="br0">&#40;</span>array<span class="br0">&#40;</span>'CURLOPT_USERPWD'=&gt;'anonymous: satishgaude@gmail.com'<span class="br0">&#41;</span><span class="br0">&#41;</span>;
        <span class="br0">&#125;</span>
        $ret = $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
        fclose<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span>;
        return $ret;
    <span class="br0">&#125;</span>
    /**
     * HTTP DELETE method
     */
    public function delete<span class="br0">&#40;</span>$url, $params = array<span class="br0">&#40;</span><span class="br0">&#41;</span>, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $file = $params<span class="br0">&#91;</span>'file'<span class="br0">&#93;</span>;
        if <span class="br0">&#40;</span>!is_file<span class="br0">&#40;</span>$file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
            return null;
        <span class="br0">&#125;</span>
		$options<span class="br0">&#91;</span>'CURLOPT_CUSTOMREQUEST'<span class="br0">&#93;</span> = 'DELETE';
        $fp   = fopen<span class="br0">&#40;</span>$file, 'r'<span class="br0">&#41;</span>;
        $size = filesize<span class="br0">&#40;</span>$file<span class="br0">&#41;</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_UPLOAD'<span class="br0">&#93;</span> = <span style="">1</span>;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILESIZE'<span class="br0">&#93;</span> = $size;
        $options<span class="br0">&#91;</span>'CURLOPT_INFILE'<span class="br0">&#93;</span>     = $fp;
        if <span class="br0">&#40;</span>!isset<span class="br0">&#40;</span>$options<span class="br0">&#91;</span>'CURLOPT_USERPWD'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            $options<span class="br0">&#91;</span>'CURLOPT_USERPWD'<span class="br0">&#93;</span> = 'anonymous: satishgaude@gmail.com';
        <span class="br0">&#125;</span>
        $ret = $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
        fclose<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span>;
        return $ret;
    <span class="br0">&#125;</span>
	/**
	* HTTP TRACE method
	*/
    public function trace<span class="br0">&#40;</span>$url, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $options<span class="br0">&#91;</span>'CURLOPT_CUSTOMREQUEST'<span class="br0">&#93;</span> = 'TRACE';
        $ret = $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;  
        return $ret;
    <span class="br0">&#125;</span>
    /**
     * HTTP OPTIONS method
     */
    public function options<span class="br0">&#40;</span>$url, $options = array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
        $options<span class="br0">&#91;</span>'CURLOPT_CUSTOMREQUEST'<span class="br0">&#93;</span> = 'OPTIONS';
        $ret = $this-&gt;request<span class="br0">&#40;</span>$url, $options<span class="br0">&#41;</span>;
        return $ret;
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/06/16/wrapper-class-for-curlsatish-gaudo-php-curl-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>function to submit data via socket</title>
		<link>http://satishgaudo.com/satblog/2009/06/16/function-to-submit-data-via-socket/</link>
		<comments>http://satishgaudo.com/satblog/2009/06/16/function-to-submit-data-via-socket/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:24:29 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=11</guid>
		<description><![CDATA[
			
				
			
		

/**
* sendDataOnSocket
* function to submit data via socket
* @param string $sContent content to send
* @param string $sHost Host name
* @param string $sFilePathÂ  file to post data
* @param string $sMethod method name
* @return string aig response
* @access public
*/
public static function sendDataOnSocket&#40;$sContent,$sHost,$sFilePath,$sMethod&#41; &#123;
if&#40;strlen&#40;$sHost&#41;==0&#41; &#123;
return array&#40;1, &#34;Empty Host name&#34;&#41;;
&#125;else if &#40;strlen&#40;$sMethod&#41;==0&#41; &#123;
return array&#40;1, &#34;Empty Method&#34;&#41;;
&#125;
$fp = fsockopen&#40;$sHost, &#34;80&#34;, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Ffunction-to-submit-data-via-socket%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Ffunction-to-submit-data-via-socket%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">/**
* sendDataOnSocket
* function to submit data via socket
* @param string $sContent content to send
* @param string $sHost Host name
* @param string $sFilePathÂ  file to post data
* @param string $sMethod method name
* @return string aig response
* @access public
*/
public static function sendDataOnSocket<span class="br0">&#40;</span>$sContent,$sHost,$sFilePath,$sMethod<span class="br0">&#41;</span> <span class="br0">&#123;</span>
if<span class="br0">&#40;</span>strlen<span class="br0">&#40;</span>$sHost<span class="br0">&#41;</span>==<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
return array<span class="br0">&#40;</span><span style="">1</span>, &quot;Empty Host name&quot;<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>else if <span class="br0">&#40;</span>strlen<span class="br0">&#40;</span>$sMethod<span class="br0">&#41;</span>==<span style="">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
return array<span class="br0">&#40;</span><span style="">1</span>, &quot;Empty Method&quot;<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
$fp = fsockopen<span class="br0">&#40;</span>$sHost, &quot;<span style="">80</span>&quot;, $errno, $errstr, <span style="">30</span><span class="br0">&#41;</span>;
if <span class="br0">&#40;</span>!$fp<span class="br0">&#41;</span> <span class="br0">&#123;</span>
//could not open socket
return array<span class="br0">&#40;</span><span style="">1</span>, &quot;could not open socket&quot;<span class="br0">&#41;</span>;
<span class="br0">&#125;</span> else <span class="br0">&#123;</span>
$out = $sMethod.&quot; &quot;.$sFilePath.&quot; HTTP/<span style="">1.1</span>\r\n&quot;;
$out .= &quot;Content-type: application/x-www-form-urlencoded\r\n&quot;;
$out .= &quot;Content-Length: &quot;.strlen<span class="br0">&#40;</span>$sContent<span class="br0">&#41;</span>.&quot;\r\n&quot;;
$out .= &quot;Host: $sHost:<span style="">80</span>\r\n&quot;;
$out .= $sContent;
$out .= &quot;\r\n&quot;;
fwrite<span class="br0">&#40;</span>$fp, $out<span class="br0">&#41;</span>;
while <span class="br0">&#40;</span>!feof<span class="br0">&#40;</span>$fp<span class="br0">&#41;</span><span class="br0">&#41;</span>
<span class="br0">&#123;</span>
$tempdata =Â  fgets<span class="br0">&#40;</span>$fp, <span style="">128</span><span class="br0">&#41;</span>;
$data .= $tempdata;
<span class="br0">&#125;</span>
return array<span class="br0">&#40;</span><span style="">0</span>, $data<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/06/16/function-to-submit-data-via-socket/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>validate xml against xsd file provided</title>
		<link>http://satishgaudo.com/satblog/2009/06/16/validate-xml-against-xsd-file-provided/</link>
		<comments>http://satishgaudo.com/satblog/2009/06/16/validate-xml-against-xsd-file-provided/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:23:33 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=10</guid>
		<description><![CDATA[
			
				
			
		

/**
* validateXmlAgainstXsd
* function to validate xml against xsd file provided
* @param string $error error
* @return string api response
* @access public
*/
public static function validateXmlAgainstXsd&#40;$sXmlPath,$sXsdPath&#41; &#123;
// Enable user error handling
libxml_use_internal_errors&#40;true&#41;;
$xml = new DOMDocument&#40;&#41;;
$xml-&#62;load&#40;$sXmlPath&#41;;
if &#40;!$xml-&#62;schemaValidate&#40;$sXsdPath&#41;&#41; &#123;
$aError =self::libxml_display_errors&#40;&#41;;
$iError=1;
&#125;
else &#123;
$iError=0;
&#125;
return array&#40;$iError,$aError&#41;;
&#125;
&#160;
Example of XSD file:
&#60;?xml version=&#34;1.0&#34;?&#62;
&#60;xs:schema xmlns:xs=&#34;http://www.w3.org/2001/XMLSchema&#34;&#62;
&#60;xs:annotation&#62;
	&#60;xs:documentation xml:lang=&#34;en&#34;&#62;
		Job specification schema for scheduler.vubites.com
		Copyright 2010 satishgaudo.com. All rights reserved.
	&#60;/xs:documentation&#62;
&#60;/xs:annotation&#62;
&#60;xs:element name=&#34;response&#34; type=&#34;responseType&#34;/&#62;
	&#60;xs:complexType name=&#34;responseType&#34;&#62;
		&#60;xs:sequence&#62;
			&#60;xs:element name=&#34;status&#34; [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Fvalidate-xml-against-xsd-file-provided%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Fvalidate-xml-against-xsd-file-provided%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">/**
* validateXmlAgainstXsd
* function to validate xml against xsd file provided
* @param string $error error
* @return string api response
* @access public
*/
public static function validateXmlAgainstXsd<span class="br0">&#40;</span>$sXmlPath,$sXsdPath<span class="br0">&#41;</span> <span class="br0">&#123;</span>
// Enable user error handling
libxml_use_internal_errors<span class="br0">&#40;</span>true<span class="br0">&#41;</span>;
$xml = new DOMDocument<span class="br0">&#40;</span><span class="br0">&#41;</span>;
$xml-&gt;load<span class="br0">&#40;</span>$sXmlPath<span class="br0">&#41;</span>;
if <span class="br0">&#40;</span>!$xml-&gt;schemaValidate<span class="br0">&#40;</span>$sXsdPath<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
$aError =self::libxml_display_errors<span class="br0">&#40;</span><span class="br0">&#41;</span>;
$iError=<span style="">1</span>;
<span class="br0">&#125;</span>
else <span class="br0">&#123;</span>
$iError=<span style="">0</span>;
<span class="br0">&#125;</span>
return array<span class="br0">&#40;</span>$iError,$aError<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
&nbsp;
Example of XSD file:
&lt;?xml version=&quot;<span style="">1.0</span>&quot;?&gt;
&lt;xs:schema xmlns:xs=&quot;http://www.w3.org/<span style="">2001</span>/XMLSchema&quot;&gt;
&lt;xs:annotation&gt;
	&lt;xs:documentation xml:lang=&quot;en&quot;&gt;
		Job specification schema for scheduler.vubites.com
		Copyright <span style="">2010</span> satishgaudo.com. All rights reserved.
	&lt;/xs:documentation&gt;
&lt;/xs:annotation&gt;
&lt;xs:element name=&quot;response&quot; type=&quot;responseType&quot;/&gt;
	&lt;xs:complexType name=&quot;responseType&quot;&gt;
		&lt;xs:sequence&gt;
			&lt;xs:element name=&quot;status&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:string&quot;&gt;&lt;/xs:element&gt;	
			&lt;xs:element name=&quot;remark&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:string&quot;&gt;&lt;/xs:element&gt;
			&lt;xs:element name=&quot;statuscode&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:int&quot;&gt;&lt;/xs:element&gt;
			&lt;xs:element name=&quot;mashid&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:string&quot;&gt;&lt;/xs:element&gt;
			&lt;xs:element name=&quot;channel_id&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:int&quot;&gt;&lt;/xs:element&gt;
			&lt;xs:element name=&quot;profile_id&quot; minOccurs=&quot;<span style="">1</span>&quot; maxOccurs=&quot;<span style="">1</span>&quot; type=&quot;xs:int&quot;&gt;&lt;/xs:element&gt;
			&lt;xs:element name=&quot;md5checksum&quot; minOccurs=&quot;<span style="">0</span>&quot; type=&quot;xs:string&quot;&gt;&lt;/xs:element&gt;
		&lt;/xs:sequence&gt;
	&lt;/xs:complexType&gt;
&lt;/xs:schema&gt;
&nbsp;
&nbsp;
Example of valid xml file:
&lt;?xml version=&quot;<span style="">1.0</span>&quot; encoding=&quot;UTF-<span style="">8</span>&quot;?&gt;
&lt;response&gt;
&lt;status&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span>Success<span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/status&gt;
&lt;remark&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span>MD5 ckecksum<span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/remark&gt;
&lt;statuscode&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span><span style="">58</span><span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/statuscode&gt;
&lt;mashid&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span>e3f03946968bc172d6e00c93a760d0c4<span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/mashid&gt;&lt;channel_id&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span><span style="">10</span><span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/channel_id&gt;
&lt;profile_id&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span><span style="">1</span><span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/profile_id&gt;
&lt;md5checksum&gt;&lt;!<span class="br0">&#91;</span>CDATA<span class="br0">&#91;</span>6f14e5acafa546495261adbd95f4a541<span class="br0">&#93;</span><span class="br0">&#93;</span>&gt;&lt;/md5checksum&gt;
&lt;/response&gt;</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/06/16/validate-xml-against-xsd-file-provided/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Function to get the mime type of the file</title>
		<link>http://satishgaudo.com/satblog/2009/06/16/function-to-get-the-mime-type-of-the-file/</link>
		<comments>http://satishgaudo.com/satblog/2009/06/16/function-to-get-the-mime-type-of-the-file/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 08:19:00 +0000</pubDate>
		<dc:creator>satishgaudo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://satishgaudo.com/satblog/?p=9</guid>
		<description><![CDATA[
			
				
			
		

/**
* getFileMimeType
* returns the mime type of the file
* @param string $sFilePath File path
* @return string mime type of the file
* @access public
*/
public function getFileMimeType&#40;$sFilePath&#41;
&#123;
exec&#40;'/usr/bin/file -i -b ' . realpath&#40;$sFilePath&#41;, $aOutput&#41;;
$sType = $aOutput&#91;0&#93;;
$aMimeTypeDet = explode&#40;';', $sType&#41;;
return trim&#40;$aMimeTypeDet&#91;0&#93;&#41;;
&#125;

]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Ffunction-to-get-the-mime-type-of-the-file%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsatishgaudo.com%2Fsatblog%2F2009%2F06%2F16%2Ffunction-to-get-the-mime-type-of-the-file%2F&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">/**
* getFileMimeType
* returns the mime type of the file
* @param string $sFilePath File path
* @return string mime type of the file
* @access public
*/
public function getFileMimeType<span class="br0">&#40;</span>$sFilePath<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
exec<span class="br0">&#40;</span>'/usr/bin/file -i -b ' . realpath<span class="br0">&#40;</span>$sFilePath<span class="br0">&#41;</span>, $aOutput<span class="br0">&#41;</span>;
$sType = $aOutput<span class="br0">&#91;</span><span style="">0</span><span class="br0">&#93;</span>;
$aMimeTypeDet = explode<span class="br0">&#40;</span>';', $sType<span class="br0">&#41;</span>;
return trim<span class="br0">&#40;</span>$aMimeTypeDet<span class="br0">&#91;</span><span style="">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://satishgaudo.com/satblog/2009/06/16/function-to-get-the-mime-type-of-the-file/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
