<?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>Блог о SEO, PHP, MySQL, NoSQL, HTML5, CSS3, jQuery, AJAX</title>
	<atom:link href="http://acdel.name/feed" rel="self" type="application/rss+xml" />
	<link>http://acdel.name</link>
	<description>Блог о веб-технологиях</description>
	<lastBuildDate>Fri, 20 Aug 2010 21:10:17 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Парсинг Google</title>
		<link>http://acdel.name/parse/parsing-google.html</link>
		<comments>http://acdel.name/parse/parsing-google.html#comments</comments>
		<pubDate>Sat, 14 Aug 2010 23:12:46 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[Парсинг]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=146</guid>
		<description><![CDATA[Хочу восстановить эту тему, так как на старом блоге она исчесла с дампа в нибытие. Способ достаточно продуктивный, с высоким КПД и позволяет парсить от 50-100к линков в мин. Минус его только в том, что парсить мы будем не Google.com, а =>blogsearch.google.com/changes.xml?last=120 следовательно не можем задавать парметры поиска, кроме одной переменной => last=120. По этой<a href="http://acdel.name/parse/parsing-google.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Хочу восстановить эту тему, так как на старом блоге она исчесла с дампа в нибытие. Способ достаточно продуктивный, с высоким КПД и позволяет парсить от 50-100к линков в мин. Минус его только в том, что парсить мы будем не Google.com, а =><cc>blogsearch.google.com/changes.xml?last=120</cc> следовательно не можем задавать парметры поиска, кроме одной переменной => <cc>last=120</cc>.</p>
<p>По этой ссылке, гугл отдает в режиме реалтайма список сайтов,  которые его пинганули на предмет появления или обновления нового контента. Контент нам не спарсить таким методом, ибо под каждую пагу нужно писать свои регулярки. Второй и самый ключевой момент этой заметки, зная параметры урлов или дир разных движков,  мы можем собрать себе базу свежих и не засвеченых урлов для <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSxVCEUsEXBFVWRYQVERHFhgGCllJQxZfVkAATVAABwtXTQ==/">хрумака</a></noindex> и прочих сабмиттеров. </p>
<p>Далее несколько показательных кусков кода для парсинга, которые вы уже заточите под свои нужды.<br />
<span id="more-146"></span></p>
<h3>Пример #1</h3>
<p>Результатом будет вывод урлов в формате <cc>http://site.com</cc> и <cc>http://site.com/dir/page.html</cc> и сохранение в файл <cc>links.txt</cc>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://blogsearch.google.com/changes.xml?last=120'</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$m</span><span style="color: #339933;">=</span> <a href="http://www.php.net/file_get_contents"><span style="color: #990000;">file_get_contents</span></a> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match_all"><span style="color: #990000;">preg_match_all</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/url=&quot;(.*?)&quot;/'</span><span style="color: #339933;">,</span><span style="color: #000088;">$m</span><span style="color: #339933;">,</span><span style="color: #000088;">$match</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">print</span> <a href="http://www.php.net/implode"><span style="color: #990000;">implode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&lt;br&gt;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$file</span><span style="color: #339933;">=</span><a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;links.txt&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;a+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span><a href="http://www.php.net/implode"><span style="color: #990000;">implode</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;rn&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<h3>Пример #2</h3>
<p>Вариант 1 + дергаем только по заданному ключевику, который берется из парметров урла.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$keyword</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;forum&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// ключевик</span><br />
<span style="color: #000088;">$ch</span><span style="color: #339933;">=</span><a href="http://www.php.net/curl_init"><span style="color: #990000;">curl_init</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span>CURLOPT_URL<span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;http://blogsearch.google.com/changes.xml?last=120&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/curl_setopt"><span style="color: #990000;">curl_setopt</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span>CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$get</span><span style="color: #339933;">=</span><a href="http://www.php.net/curl_exec"><span style="color: #990000;">curl_exec</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match_all"><span style="color: #990000;">preg_match_all</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/url=&quot;S+&quot;/i'</span><span style="color: #339933;">,</span><span style="color: #000088;">$get</span><span style="color: #339933;">,</span><span style="color: #000088;">$urls</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Results for <span style="color: #006699; font-weight: bold;">$keyword</span>:&lt;br&gt;&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urls</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$blog</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000088;">$blog</span><span style="color: #339933;">=</span><a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/url=&quot;/i'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$blog</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$blog</span><span style="color: #339933;">=</span><a href="http://www.php.net/str_replace"><span style="color: #990000;">str_replace</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #0000ff;">&quot;,&quot;</span><span style="color: #0000ff;">&quot;,<span style="color: #006699; font-weight: bold;">$blog</span>);<br />
if(!preg_match(&quot;</span><span style="color: #339933;">/</span><span style="color: #000088;">$keyword</span><span style="color: #339933;">/</span>i<span style="color: #0000ff;">&quot;,<span style="color: #006699; font-weight: bold;">$blog</span>)) {unset(<span style="color: #006699; font-weight: bold;">$blog</span>);} else {<br />
echo <span style="color: #006699; font-weight: bold;">$blog</span>.&quot;</span><span style="color: #339933;">&lt;</span>br<span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;;<br />
<span style="color: #006699; font-weight: bold;">$file</span>=fopen(&quot;</span>links<span style="color: #339933;">.</span>txt<span style="color: #0000ff;">&quot;,&quot;</span>a<span style="color: #339933;">+</span><span style="color: #0000ff;">&quot;);<br />
fwrite(<span style="color: #006699; font-weight: bold;">$file</span>,&quot;</span><span style="color: #000088;">$blogrn</span><span style="color: #0000ff;">&quot;);<br />
fclose(<span style="color: #006699; font-weight: bold;">$file</span>);<br />
}<br />
}</span></div></td></tr></tbody></table></div>
<h3>Пример #3</h3>
<p>В файл со счетчиком, в формате <cc>domen.com</cc>. После каждой отработки, скрипт создает новый файл <cc>links_*</cc>. В папке со скриптом создать на запись файл <cc>count.txt</cc>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://blogsearch.google.com/changes.xml?last=120'</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$m</span><span style="color: #339933;">=</span> <a href="http://www.php.net/file_get_contents"><span style="color: #990000;">file_get_contents</span></a> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/preg_match_all"><span style="color: #990000;">preg_match_all</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/url=&quot;(.*?)&quot;/'</span><span style="color: #339933;">,</span><span style="color: #000088;">$m</span><span style="color: #339933;">,</span><span style="color: #000088;">$match</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$c</span><span style="color: #339933;">=</span><a href="http://www.php.net/file_get_contents"><span style="color: #990000;">file_get_contents</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;count.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$c</span><span style="color: #339933;">=</span><a href="http://www.php.net/trim"><span style="color: #990000;">trim</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$c</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$c</span><span style="color: #339933;">=</span><span style="color: #000088;">$c</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$count</span><span style="color: #339933;">=</span><a href="http://www.php.net/count"><span style="color: #990000;">count</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$count</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$count</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
<span style="color: #000088;">$blog</span><span style="color: #339933;">=</span><a href="http://www.php.net/parse_url"><span style="color: #990000;">parse_url</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$match</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$all</span><span style="color: #339933;">.=</span><span style="color: #000088;">$blog</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'host'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;n&quot;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'links_'</span><span style="color: #339933;">.</span><span style="color: #000088;">$c</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.txt'</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;w&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fputs"><span style="color: #990000;">fputs</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span><span style="color: #000088;">$all</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$fc</span><span style="color: #339933;">=</span> <a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'count.txt'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;w&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fputs"><span style="color: #990000;">fputs</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fc</span><span style="color: #339933;">,</span><span style="color: #000088;">$c</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fc</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Пожалуй этих примеров будет достаточно. Остальные варианты, под ваши нужды накидаете уже сами думаю.</p>
<p>Не забываем что есть еще крон, на который можно поставить все это дело и только успевать снимать свежие базы. Данный метод, позволяет парсить в среднем 15-20K  за один запрос скрипта Примера #1, или до 100К урлов в минуту на среднем железе и канале. Можно запустить несколько копий скрипта и забыть про Hrefer на парсинг Гугла с морды, а сразу купить <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSxVCEUsEXBFVWRYQVERHFhgGCllJQxZfVkAATVAABwtX/">XRumer</a></noindex> и начать бомбить по свежим и собственным базам.<br />
Адиос.</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/parse/parsing-google.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Палю тему. Гугл профили.</title>
		<link>http://acdel.name/money-theme/palyu-temu-gugl-profili.html</link>
		<comments>http://acdel.name/money-theme/palyu-temu-gugl-profili.html#comments</comments>
		<pubDate>Fri, 13 Aug 2010 22:00:39 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[$$$Тема$$$]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Палю тему]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=134</guid>
		<description><![CDATA[Все подробности палить конечно же не стану. Под какие цели это можно использовать, решайте сами. Сделано это было по ошибке админов Гугла, скорее именно так, ибо зачем палить такие базы. Значит много говорить не буду, буду говорить мало. Google => 1site:gstatic.com/s2/sitemaps/ Что мы видим, видим мы уже готовые базы гугл профилей. 123456789http://www.google.com/profiles/118211648611575396494 http://www.google.com/profiles/109179909521286158723 http://www.google.com/profiles/116296519385262740335 http://www.google.com/profiles/106571368858735466105<a href="http://acdel.name/money-theme/palyu-temu-gugl-profili.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Все подробности палить конечно же не стану. Под какие цели это можно использовать, решайте сами. Сделано это было по ошибке админов Гугла, скорее именно так, ибо зачем палить такие базы.<br />
Значит много говорить не буду, буду говорить мало. Google =></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">site:gstatic.com/s2/sitemaps/</div></td></tr></tbody></table></div>
<p>Что мы видим, видим мы уже готовые базы гугл профилей.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://www.google.com/profiles/118211648611575396494<br />
http://www.google.com/profiles/109179909521286158723<br />
http://www.google.com/profiles/116296519385262740335<br />
http://www.google.com/profiles/106571368858735466105<br />
http://www.google.com/profiles/110063791708326695348<br />
http://www.google.com/profiles/108163432553202142496<br />
http://www.google.com/profiles/102810303301560055661<br />
http://www.google.com/profiles/106048210352973819833<br />
http://www.google.com/profiles/114215460376352634568</div></td></tr></tbody></table></div>
<p>Вы наверное дернулись сразу писать парсер под это дело. Ну что же, идея хороша, но есть еще лучше, правдо если вы работаете под линуксом, то парсер этот будет в одну строчку:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl <span style="color: #660033;">-O</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.gstatic.com<span style="color: #000000; font-weight: bold;">/</span>s2<span style="color: #000000; font-weight: bold;">/</span>sitemaps<span style="color: #000000; font-weight: bold;">/</span>sitemap-<span style="color: #7a0874; font-weight: bold;">&#91;</span>000-<span style="color: #000000;">9999</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>.txt</div></td></tr></tbody></table></div>
<p>Все, тема спалена. </p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/money-theme/palyu-temu-gugl-profili.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Простой пример клоакинга по реферреру</title>
		<link>http://acdel.name/doorways/cloaking/prostoj-primer-kloakinga-po-referreru.html</link>
		<comments>http://acdel.name/doorways/cloaking/prostoj-primer-kloakinga-po-referreru.html#comments</comments>
		<pubDate>Fri, 13 Aug 2010 00:21:27 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[Cloaking]]></category>
		<category><![CDATA[Дорвеи]]></category>
		<category><![CDATA[Клоакинг]]></category>
		<category><![CDATA[Фарма]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=130</guid>
		<description><![CDATA[Простой и примитивный скрипт клоаки по реферреру. Если пришел с Гугла, получи виагру, иначе хом пага. 1234567891011121314151617181920212223242526$referer = getenv&#40; &#34;HTTP_REFERER&#34; &#41;; $tapps_referer = &#34;http://www.google.com&#34;; &#160; // проверяем, есть ли реферрер &#160; &#160; if &#40;isset&#40;$tapps_referer&#41; &#38;&#38; $tapps_referer!=&#34;&#34;&#41; &#160; &#160; &#123; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; if &#40;$i=strpos&#40;$referer,&#34;?&#34;&#41;&#41; &#160; &#160; &#160; &#160; &#123; &#160;<a href="http://acdel.name/doorways/cloaking/prostoj-primer-kloakinga-po-referreru.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Простой и примитивный скрипт клоаки по реферреру. Если пришел с Гугла, получи виагру, иначе хом пага.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$referer</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/getenv"><span style="color: #990000;">getenv</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;HTTP_REFERER&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$tapps_referer</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://www.google.com&quot;</span><span style="color: #339933;">;</span><br />
&nbsp;<br />
<span style="color: #666666; font-style: italic;">// проверяем, есть ли реферрер</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/isset"><span style="color: #990000;">isset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tapps_referer</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$tapps_referer</span><span style="color: #339933;">!=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><a href="http://www.php.net/strpos"><span style="color: #990000;">strpos</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$referer</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;?&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$referer</span><span style="color: #339933;">=</span> <a href="http://www.php.net/substr"><span style="color: #990000;">substr</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$referer</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$tapps_referer</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$referer</span><span style="color: #009900;">&#41;</span> <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
<a href="http://www.php.net/header"><span style="color: #990000;">header</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: www.site.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// Если пришел не с реферрером гугла, получи хом пагу</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://www.php.net/header"><span style="color: #990000;">header</span></a> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: viagra.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">//Если пришел с гугла, получи viagra.php </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Показательный пример, без лишних проверок.</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/doorways/cloaking/prostoj-primer-kloakinga-po-referreru.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FastVisits &#8211; Накрутка статистики посещений</title>
		<link>http://acdel.name/soft/fastvisits-nakrutka-statistiki-poseshhenij.html</link>
		<comments>http://acdel.name/soft/fastvisits-nakrutka-statistiki-poseshhenij.html#comments</comments>
		<pubDate>Wed, 11 Aug 2010 00:05:20 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[Софт]]></category>
		<category><![CDATA[Alexa]]></category>
		<category><![CDATA[Youtube]]></category>
		<category><![CDATA[Статистика]]></category>
		<category><![CDATA[Счетчики]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=118</guid>
		<description><![CDATA[Простая софтинка, с помощью которой можно накрутить: количество просмотров видео на Youtube, Alexa rank и другие счетчики посещений. Работает по списку прокси которые лежат в файле proxy.txt , чем больше прокси, тем больше накрутим. Функционал: - Выбор реферера - Случайный user-agent (из 30) - Таймер - Количество потоков [скачать] [скачать_2]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://acdel.name/wp-content/uploads/2010/08/fastvisits.png"><img class="size-full wp-image-119  aligncenter" title="fastvisits" src="http://acdel.name/wp-content/uploads/2010/08/fastvisits.png" alt="" width="375" height="458" /></a></p>
<p>Простая софтинка, с помощью которой можно накрутить: количество просмотров видео на Youtube, Alexa rank и другие счетчики посещений. Работает по списку прокси которые лежат в файле <em>proxy.txt </em>, чем  больше прокси, тем больше накрутим.<br />
<span id="more-118"></span></p>
<h2> Функционал:</h2>
<ul>
<li>- Выбор реферера</li>
<li>- Случайный user-agent (из 30)</li>
<li>- Таймер</li>
<li>- Количество потоков</li>
</ul>
<p>[<noindex><a rel="nofollow" href="http://acdel.name/geo/C00VRgsWSw9QAQQTQxVdSksHXlsaBV8JAEdJAlQDcHw0fzcZV1gXFmMPFg9HFmdOVEoAGE8KRg==/">скачать</a></noindex>]<br />
[<noindex><a rel="nofollow" href="http://acdel.name/geo/C00VRgsWSwxUFAoCHRdNFwENQl0aUQVTVABXB1YAAgVMXwBFRW8NEVwSFjlFVBYJSx5YRhsLQggJ/">скачать_2</a></noindex>]</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/soft/fastvisits-nakrutka-statistiki-poseshhenij.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Zend Framework 1.10.7</title>
		<link>http://acdel.name/php/zendframework/vyshel-zend-framework-1-10-7.html</link>
		<comments>http://acdel.name/php/zendframework/vyshel-zend-framework-1-10-7.html#comments</comments>
		<pubDate>Sat, 07 Aug 2010 21:11:58 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=101</guid>
		<description><![CDATA[Вышел Zend Framework 1.10.7. Список изменений можно увидеть в changelog. Исправлено около 60-ти багов. Если вы используете Zend_Service_Twitter, убедитесь что вы обновились до версии 1.10.6 или 1.10.7. Подробнее в оригинале статьи На конец сентября запланирован релиз 1.11.0. Он будет содержать багфиксы серии 1.10, обновления переводов для валидаторов, и новый функционал. ZF команда сейчас активно работает<a href="http://acdel.name/php/zendframework/vyshel-zend-framework-1-10-7.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://acdel.name/wp-content/uploads/2010/08/Zend_Framework.png"><img src="http://acdel.name/wp-content/uploads/2010/08/Zend_Framework.png" alt="" title="Zend_Framework" width="510" height="280" class="aligncenter size-full wp-image-102" /></a></p>
<p>Вышел Zend Framework 1.10.7.</p>
<p>Список изменений можно увидеть в <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwRHBwgDRApKU0seVFhRTVUKCBsFWwVeVVAPVgYZABdVUhtR/">changelog</a></noindex>. Исправлено около 60-ти багов.</p>
<p>Если вы используете Zend_Service_Twitter, убедитесь что вы обновились до версии 1.10.6 или 1.10.7. Подробнее в <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwZQEB8JXQAWQgAKVRhWDFtKBEYSWgdcVxpSC1IABg==/">оригинале</a></noindex> статьи</p>
<p>На конец сентября запланирован релиз 1.11.0. Он будет содержать багфиксы серии 1.10, обновления переводов для валидаторов, и новый функционал.</p>
<p>ZF команда сейчас активно работает над веткой 2.0 и приближается к первому рубежу (milestone). Планируется выполнить следующие задачи:<br />
<span id="more-101"></span></p>
<ul>
<li>Удаление всех вызовов require_once</li>
<li>Рефакторинг тестового окружения для использования встроенных в PHPUnit возможностей</li>
<li>Переход на неймспейсы PHP 5.3</li>
</ul>
<p>Следите за обновлениями!<br />
Скачать релиз можно <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwRHBwgDRApKU0seVFhRTVUKCBsCXBNeXloCXU5aUE0BEUE=/">здесь</a></noindex>.</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/php/zendframework/vyshel-zend-framework-1-10-7.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обнинск &#8211; новый алгоритм ранжирования гео-независимых запросов в России</title>
		<link>http://acdel.name/yandex/algo/obninsk-novyj-algoritm-ranzhirovaniya-geo-nezavisimyx-zaprosov-v-rossii.html</link>
		<comments>http://acdel.name/yandex/algo/obninsk-novyj-algoritm-ranzhirovaniya-geo-nezavisimyx-zaprosov-v-rossii.html#comments</comments>
		<pubDate>Sat, 07 Aug 2010 20:32:59 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[Ранжирование]]></category>
		<category><![CDATA[Яндекс]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=81</guid>
		<description><![CDATA[Сегодня яндексоиды снова запустили Буки, что говорит от тестировании нового алгоритма. На этот раз преподнесли &#171;Обнинск&#187;. Обсуждение алго на webmaster.ya.ru и на Серче. От себя добавлю пару моментов, которые бросились сразу в глаза при беглом изучении. 1. Стали приорететнее внешние факторы. Ссылочное стало больше рулить, при этом уменьшилось влияние релевантной тестовки. Вспоминаем ситуацию пару лет<a href="http://acdel.name/yandex/algo/obninsk-novyj-algoritm-ranzhirovaniya-geo-nezavisimyx-zaprosov-v-rossii.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://acdel.name/wp-content/uploads/2010/08/Yandex_Obninsk.png"><img class="aligncenter size-full wp-image-82" title="Yandex_Obninsk" src="http://acdel.name/wp-content/uploads/2010/08/Yandex_Obninsk.png" alt="" width="510" height="280" /></a></p>
<p>Сегодня яндексоиды снова запустили <strong><noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwBADQxISgRWXAAcH0RA/"><span style="color: #ff0000;">Б</span><span style="color: #000000;">уки</span></a></noindex></strong>, что говорит от тестировании нового алгоритма. На этот раз преподнесли &laquo;Обнинск&raquo;. Обсуждение алго на <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSxVQBAgHQBFdSksdUBhHFhkXAEQKWgFDHE0OVV5fRVwJPVsJWF4CUg8=/">webmaster.ya.ru</a></noindex> и на <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwRaFBALHRZdWRcHWVNbBF8LAEdIQREfQV0MThVeQ1wFBhsWDRYMEQUNV10BAAxFFVVWDF1DBVdXCFE=/">Серче</a></noindex>. </p>
<p>От себя добавлю пару моментов, которые бросились сразу в глаза при беглом изучении.</p>
<p>1. Стали приорететнее внешние факторы. Ссылочное стало больше рулить, при этом уменьшилось влияние релевантной тестовки. Вспоминаем ситуацию пару лет тому, война бюджетов. Рерайтеры в этом сезоне отдыхают, грею ручки &laquo;Сапа&raquo; биржи. Берем не качеством, а количеством.</p>
<p>2. Тяжело не заметить, поднялись, при чем хорошо поднялись сайты с контактными данными. <noindex><a rel="nofollow" target="_blank" href="http://acdel.name/geo/C00VRgsWSwBADQxISgRWXAAcH0RATE8EC1AVVgVCUV1cTQRORQRBJgVDJyUWIQgdJ1EUcgRGDldAcFYWJgAXcVMcI3QUfVRHdyRAIgNAen1AIAETdyUTIVQRXgNBdAIQIXxEcgEcJiMQIlVDcVUdfFRBCQQTQAZWXQ8KQVkCAwY=/">Пример</a></noindex></p>
<p>Есть некоторые другие замечания, но о них упоминать не хочу, ибо это бууууки, и что в конечном варианте выложат не известно и самим яндексоидам.  Через недельку-другую думаю, после детального анализа нового алго, напишу его подробный обзор с явными примерами.</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/yandex/algo/obninsk-novyj-algoritm-ranzhirovaniya-geo-nezavisimyx-zaprosov-v-rossii.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>9 Полезных PHP функций</title>
		<link>http://acdel.name/php/9-poleznyx-php-funkcij.html</link>
		<comments>http://acdel.name/php/9-poleznyx-php-funkcij.html#comments</comments>
		<pubDate>Fri, 06 Aug 2010 21:49:43 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=36</guid>
		<description><![CDATA[Обзор нескольких PHP функций которые могут быть полезны в разных повседневных задачах. Будь то вы кодер с опытом, или начинающий разработчик. 1. Функции с произвольным числом аргументов PHP позволяет определять функции с необязательными аргументами. Но существует также метод, который позволяет использовать полностью произвольное число аргументов функции. Для примера, возьмем функции с необязательными аргументами: 12345678910111213141516171819// Функция<a href="http://acdel.name/php/9-poleznyx-php-funkcij.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://acdel.name/wp-content/uploads/2010/08/php.jpg"><img src="http://acdel.name/wp-content/uploads/2010/08/php.jpg" alt="" title="php" width="510" height="280" class="aligncenter size-full wp-image-39" /></a></p>
<p>Обзор нескольких PHP функций которые могут быть полезны в разных повседневных задачах. Будь то вы кодер с опытом, или начинающий разработчик.<br />
<span id="more-36"></span></p>
<h3> 1. Функции с произвольным числом аргументов </h3>
<p>PHP позволяет определять функции с необязательными аргументами. Но существует также метод, который позволяет использовать полностью произвольное число аргументов функции.</p>
<p>Для примера, возьмем функции с необязательными аргументами:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Функция с двумя произвольными аргументами</span><br />
<span style="color: #000000; font-weight: bold;">function</span> foo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$arg1</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$arg2</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;arg1: <span style="color: #006699; font-weight: bold;">$arg1</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;arg2: <span style="color: #006699; font-weight: bold;">$arg2</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
foo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hello'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'world'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
arg1: hello<br />
arg2: world<br />
*/</span><br />
<br />
foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
arg1:<br />
arg2:<br />
*/</span></div></td></tr></tbody></table></div>
<p>Теперь, давайте посмотрим, каким образом мы можем построить функцию, которая принимает любое количество аргументов. Используем функцию <strong>func_get_args();</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Список аргументов может быть пустым</span><br />
<span style="color: #000000; font-weight: bold;">function</span> foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//Возвращает массив всех переданных аргументов</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/func_get_args"><span style="color: #990000;">func_get_args</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$k</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;arg&quot;</span><span style="color: #339933;">.</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$k</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;: <span style="color: #006699; font-weight: bold;">$v</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Ничего не выведет */</span><br />
<br />
foo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hello'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
arg1: hello<br />
*/</span><br />
<br />
foo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'hello'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'world'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'again'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
arg1: hello<br />
arg2: world<br />
arg3: again<br />
*/</span></div></td></tr></tbody></table></div>
<h3> 2. Используем Glob() для поиска файлов </h3>
<p>Большинство PHP функций имеют наглядные имена. К примеру функция <strong>glob();</strong> по которой сразу не скажешь что она делает, если вы с ней не знакомы.</p>
<p>Как альтернативную функцию для поиска файлов, можно рассматривать <strong>scandir();</strong>. Данная функция позволить вам искать файлы по шаблону.</p>
<p>Поиск файлов функцией <strong>glob();</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Поиск всех php файлов</span><br />
<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/glob"><span style="color: #990000;">glob</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'*.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; phptest.php<br />
&nbsp; &nbsp; [1] =&gt; pi.php<br />
&nbsp; &nbsp; [2] =&gt; post_output.php<br />
&nbsp; &nbsp; [3] =&gt; test.php<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<p>Для поиска нескольких типов файлов:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Поиск всех php и txt файлов</span><br />
<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/glob"><span style="color: #990000;">glob</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'*.{php,txt}'</span><span style="color: #339933;">,</span> GLOB_BRACE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; phptest.php<br />
&nbsp; &nbsp; [1] =&gt; pi.php<br />
&nbsp; &nbsp; [2] =&gt; post_output.php<br />
&nbsp; &nbsp; [3] =&gt; test.php<br />
&nbsp; &nbsp; [4] =&gt; log.txt<br />
&nbsp; &nbsp; [5] =&gt; test.txt<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<p>Поиск файлов имеющих обратный путь:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/glob"><span style="color: #990000;">glob</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'../images/a*.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; ../images/apple.jpg<br />
&nbsp; &nbsp; [1] =&gt; ../images/art.jpg<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<p>Если вы хотите получить полный путь к каждому файлу, можно просто вызвать <strong>realpath();</strong></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/glob"><span style="color: #990000;">glob</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'../images/a*.jpg'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">//Применяет функцию к каждому элементу массива</span><br />
<span style="color: #000088;">$files</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array_map"><span style="color: #990000;">array_map</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'realpath'</span><span style="color: #339933;">,</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$files</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; C:\wamp\www\images\apple.jpg<br />
&nbsp; &nbsp; [1] =&gt; C:\wamp\www\images\art.jpg<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<h3>3. Информация о использованной памяти (RAM)</h3>
<p>Достаточно немаловажный фактор, при разработке. Ведь основная цель оптимизации кода, это уменьшение потребляемых ресурсов.</p>
<p>Объем памяти, используемый в сценарии может изменяться во время выполнения. Чтобы получить текущее используемое значение памяти, используем функцию <strong>memory_get_usage();</strong>, и чтобы получить наибольший (пиковый) объем памяти, используемой в любой момент выполнения скрипта, используем функцию <strong>memory_get_peak_usage();</strong>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Initial: &quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/memory_get_usage"><span style="color: #990000;">memory_get_usage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; bytes <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат<br />
Initial: 361400 bytes<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Используем часть памяти</span><br />
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$array</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// &nbsp;Удаляем часть массива</span><br />
<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/unset"><span style="color: #990000;">unset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Final: &quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/memory_get_usage"><span style="color: #990000;">memory_get_usage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; bytes <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Final: 885912 bytes<br />
*/</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Peak: &quot;</span><span style="color: #339933;">.</span><a href="http://www.php.net/memory_get_peak_usage"><span style="color: #990000;">memory_get_peak_usage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; bytes <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Peak: 13687072 bytes<br />
*/</span></div></td></tr></tbody></table></div>
<h3>3. Информация о использовании процессора (CPU)</h3>
<p>Второй немаловажный фактор, а может и даже первый по отношению к памяти. Если RAM мы можем добавить, одну, две планочки, то с процессорным временем у нас тупик, и использовать его нужно максимально рационально.</p>
<p>Для этого мы будем использовать функцию <strong>getrusage();</strong>. Так-же стоит помнить что данная функция не доступна на Windows платформах.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/getrusage"><span style="color: #990000;">getrusage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [ru_oublock] =&gt; 0<br />
&nbsp; &nbsp; [ru_inblock] =&gt; 0<br />
&nbsp; &nbsp; [ru_msgsnd] =&gt; 2<br />
&nbsp; &nbsp; [ru_msgrcv] =&gt; 3<br />
&nbsp; &nbsp; [ru_maxrss] =&gt; 12692<br />
&nbsp; &nbsp; [ru_ixrss] =&gt; 764<br />
&nbsp; &nbsp; [ru_idrss] =&gt; 3864<br />
&nbsp; &nbsp; [ru_minflt] =&gt; 94<br />
&nbsp; &nbsp; [ru_majflt] =&gt; 0<br />
&nbsp; &nbsp; [ru_nsignals] =&gt; 1<br />
&nbsp; &nbsp; [ru_nvcsw] =&gt; 67<br />
&nbsp; &nbsp; [ru_nivcsw] =&gt; 4<br />
&nbsp; &nbsp; [ru_nswap] =&gt; 0<br />
&nbsp; &nbsp; [ru_utime.tv_usec] =&gt; 0<br />
&nbsp; &nbsp; [ru_utime.tv_sec] =&gt; 0<br />
&nbsp; &nbsp; [ru_stime.tv_usec] =&gt; 6269<br />
&nbsp; &nbsp; [ru_stime.tv_sec] =&gt; 0<br />
)<br />
<br />
*/</span></div></td></tr></tbody></table></div>
<p>Описывать все значения нет смысла, а стоит только выделить основные: <strong>user time</strong> и <strong>system time</strong>. В результате это последние четыре значения, каждое из которых измеряется в секундах и миллисекундах.</p>
<p>Рассмотрим их отдельно:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Ожидать 3 секунды</span><br />
<a href="http://www.php.net/sleep"><span style="color: #990000;">sleep</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/getrusage"><span style="color: #990000;">getrusage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;User time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;System time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">/* Результат в секундах<br />
User time: 0.011552<br />
System time: 0<br />
*/</span></div></td></tr></tbody></table></div>
<p>Итак, как вы видите, загрузки процессора и фактической продолжительности выполнения, не всегда то же самое. Так как скрипт ожидает 3 секунды для выполнения, загрузки процессора практически нет.</p>
<p>Есть много других задач, которые могут выполняться в реальном времени, но могут не использовать процессорного времени, так как ожидают операции с диском.</p>
<p>Как пример, следующий скрипт:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Цикл 10 миллионов раз</span><br />
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">10000000</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/getrusage"><span style="color: #990000;">getrusage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;User time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;System time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
User time: 1.424592<br />
System time: 0.004204<br />
*/</span></div></td></tr></tbody></table></div>
<p>Как мы видим, это заняло около 1,4 секунд процессорного времени, почти все из которых было время пользователя, так как не было никаких системных вызовов.</p>
<p><em>System Time – это количество времени центрального процессора, которое тратится на выполнение системных вызовов для ядра от имени программы.</em></p>
<p>Как пример:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$start</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// Вызываем microtime в течении 3 секунд</span><br />
<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$start</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/getrusage"><span style="color: #990000;">getrusage</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;User time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_utime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;System time: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_sec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ru_stime.tv_usec'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
User time: 1.088171<br />
System time: 1.675315<br />
*/</span></div></td></tr></tbody></table></div>
<p>Теперь у нас совсем мало времени использования системы. Это потому, что сценарий вызывает функцию <strong>microtime();</strong> много раз, которая выполняет запрос через ОС для получения времени.</p>
<p>Также вы можете заметить, что цифра в сумме не совсем дотягивает до 3-х секунд. Это потому, что, были другие процессы на сервере, а также сценарий не использует 100% CPU на все время выполнения, в заданные нами 3 секунды.</p>
<h3>5. Магические константы</h3>
<p>PHP содержит полезные магические константы для получения:</p>
<p><strong>(__LINE__)</strong> – номер текущей строки;<br />
<strong>(__FILE__)</strong> – путь к файлу;<br />
<strong>(__DIR__)</strong> – путь к каталогу;<br />
<strong>(__FUNCTION__)</strong> – имя функции;<br />
<strong>(__CLASS__)</strong> – имя класса;<br />
<strong>(__METHOD__)</strong> – имя метода;<br />
<strong>(__NAMESPACE__)</strong> – текущее пространство имен.</p>
<p>Мы не будем рассматривать каждую из них в этой статье, но рассмотрим пример их использования. Когда нужно подгрузить другие скрипты, удобно использовать (__FILE__) или (__DIR__ ) начиная с PHP 5.3.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Это относительный путь загрузки сценариев</span><br />
<span style="color: #666666; font-style: italic;">// который может привести к проблемам при запуске</span><br />
<span style="color: #666666; font-style: italic;">// сценариев &nbsp;из различных каталогов</span><br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'config/database.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #339933;">/</span> <span style="color: #339933;">/</span> Это всегда относительный путь этого файла<br />
<span style="color: #339933;">/</span> <span style="color: #339933;">/</span> где бы он ни был выполнен<br />
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/dirname"><span style="color: #990000;">dirname</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/config/database.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Использование (__LINE__), тем самым упрощаем отладку. Зависит от строки в скрипте, на которой эта константа указана. Нечувствительна к регистру.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Некоторый код</span><br />
<span style="color: #666666; font-style: italic;">// ...</span><br />
my_debug<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;some debug message&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">__LINE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/*Результат:<br />
Line 4: Отладочное сообщение<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Еще некоторый код</span><br />
<span style="color: #666666; font-style: italic;">// ...</span><br />
my_debug<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;another debug message&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">__LINE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Line 11: Другое отладочное сообщени<br />
*/</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> my_debug<span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #339933;">,</span> <span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Line <span style="color: #006699; font-weight: bold;">$line</span>: <span style="color: #006699; font-weight: bold;">$msg</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<h3>6. Создание уникальных идентификаторов</h3>
<p>Могут быть ситуации, когда вам нужно создать уникальную строку/значение. Многие используют функцию <strong>md5();</strong>, хотя она не совсем предназначена для этой цели:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">/</span> <span style="color: #339933;">/</span> Создаем уникальную строку<br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/md5"><span style="color: #990000;">md5</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/time"><span style="color: #990000;">time</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <a href="http://www.php.net/mt_rand"><span style="color: #990000;">mt_rand</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1000000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
b253a5d3823951d533e70691e3efb08e<br />
*/</span></div></td></tr></tbody></table></div>
<p>Существует на самом деле другая функция, <strong>uniqid();</strong> которая должна быть использована специально для этого:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Генерировать уникальную строку</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/uniqid"><span style="color: #990000;">uniqid</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
4bd67c947233e<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Генерировать еще одну уникальную строку.</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/uniqid"><span style="color: #990000;">uniqid</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
4bd67c9472340<br />
*/</span></div></td></tr></tbody></table></div>
<p>Можно заметить, что, хотя строки являются уникальными, но они имеют одинаковые значения в начале. Это потому,что получение строк, связанно с серверным временем. Это на самом деле имеет приятный побочный эффект, так как каждый новый идентификатор получаем позднее в алфавитном порядке, так что они могут быть отсортированы.</p>
<p>Чтобы уменьшить шансы на получение дублей, вы можете передать префикс, или, второй параметр для увеличения энтропии:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// С префиксом</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/uniqid"><span style="color: #990000;">uniqid</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foo_'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* prints<br />
foo_4bd67d6cd8b8f<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Увеличиваем энтропию</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/uniqid"><span style="color: #990000;">uniqid</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
4bd67d6cd8b926.12135106<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Оба варианта</span><br />
<span style="color: #b1b100;">echo</span> <a href="http://www.php.net/uniqid"><span style="color: #990000;">uniqid</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'bar_'</span><span style="color: #339933;">,</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат?<br />
bar_4bd67da367b650.43684647<br />
*/</span></div></td></tr></tbody></table></div>
<p>Эта функция будет генерировать более короткие строки, чем <strong>md5();</strong>, которая также поможет сэкономить немало места в БД.</p>
<h3>7. Сериализация</h3>
<p>Бывают потребности, когда нужно преобразовать массивы или объекты в формате строк. Иначе говоря загнать массив в в файл, а потом его благополучно извлекать. Есть две функции сериализации переменных: <strong>serialize();</strong> и <strong>unserialize();</strong>.</p>
<p>Функция serialize(); возвращает упакованный вариант какого-то объекта, а unserialize(); делает всё наоборот, то есть принимает упакованый вариант, а возвращает нормальный вариант, который был до упаковки.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// массив</span><br />
<span style="color: #000088;">$myvar</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'hello'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #cc66cc;">42</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'two'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'apple'</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Преобразуем в строку</span><br />
<span style="color: #000088;">$string</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/serialize"><span style="color: #990000;">serialize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myvar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$string</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Резуьтат:<br />
a:4:{i:0;s:5:&quot;hello&quot;;i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3:&quot;two&quot;;}i:3;s:5:&quot;apple&quot;;}<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Получаем оригинальную переменную</span><br />
<span style="color: #000088;">$newvar</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/unserialize"><span style="color: #990000;">unserialize</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$newvar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; hello<br />
&nbsp; &nbsp; [1] =&gt; 42<br />
&nbsp; &nbsp; [2] =&gt; Array<br />
&nbsp; &nbsp; &nbsp; &nbsp; (<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] =&gt; 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] =&gt; two<br />
&nbsp; &nbsp; &nbsp; &nbsp; )<br />
<br />
&nbsp; &nbsp; [3] =&gt; apple<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<p>Это был родной php’шный метод сериализации. Однако, так как JSON стал настолько популярным в последние годы, они решили добавить его поддержку начиная с PHP 5.2.</p>
<p>Теперь можно использовать функции <strong>json_encode();</strong> и <strong>json_decode();</strong>:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// массив</span><br />
<span style="color: #000088;">$myvar</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'hello'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #cc66cc;">42</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'two'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'apple'</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Преобразуем массив</span><br />
<span style="color: #000088;">$string</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/json_encode"><span style="color: #990000;">json_encode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myvar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$string</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
[&quot;hello&quot;,42,[1,&quot;two&quot;],&quot;apple&quot;]<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Получаем оригинальную переменную</span><br />
<span style="color: #000088;">$newvar</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/json_decode"><span style="color: #990000;">json_decode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$newvar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Array<br />
(<br />
&nbsp; &nbsp; [0] =&gt; hello<br />
&nbsp; &nbsp; [1] =&gt; 42<br />
&nbsp; &nbsp; [2] =&gt; Array<br />
&nbsp; &nbsp; &nbsp; &nbsp; (<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [0] =&gt; 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1] =&gt; two<br />
&nbsp; &nbsp; &nbsp; &nbsp; )<br />
<br />
&nbsp; &nbsp; [3] =&gt; apple<br />
)<br />
*/</span></div></td></tr></tbody></table></div>
<p>Как видим, она является более компактной, и лучше всего, совместимой с JavaScript и многими другими языками. Тем не менее, для сложных объектов, некоторая информация может быть потеряна.</p>
<h3>8. Сжатие строк</h3>
<p>Когда речь идет о сжатии, мы обычно думаем о файлах, таких как ZIP архивы. Но как вы уже поняли, можно сжать длинные строки средствами PHP, без участия каких-либо архиваторов.</p>
<p>Со сжатием строк, тоже все просто. Для этого используют следующие две функции: <strong>gzcompress();</strong> и <strong>gzuncompress();</strong>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$string</span> <span style="color: #339933;">=</span><br />
<span style="color: #0000ff;">&quot;PHP &nbsp;is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML. &quot;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$compressed</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/gzcompress"><span style="color: #990000;">gzcompress</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Original size: &quot;</span><span style="color: #339933;">.</span> <a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$string</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Original size: 800<br />
*/</span><br />
<br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Compressed size: &quot;</span><span style="color: #339933;">.</span> <a href="http://www.php.net/strlen"><span style="color: #990000;">strlen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$compressed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">/* Результат:<br />
Compressed size: 418<br />
*/</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Получить обратно</span><br />
<span style="color: #000088;">$original</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/gzuncompress"><span style="color: #990000;">gzuncompress</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$compressed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Благодаря этим функциям, можно получить достаточное сжатие. </p>
<h3>9. Регистрация завершения работы функции</h3>
<p>Функция <strong>register_shutdown_function();</strong> которая позволит вам выполнить некоторый код, прямо перед завершением работы сценария. </p>
<p>Вы хотите захватить часть базовых статистических данных, в конце вашего скрипта, например, как долго он выполнялся:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Захват начала времени</span><br />
<span style="color: #000088;">$start_time</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Ваш код</span><br />
<span style="color: #666666; font-style: italic;">// ...</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Показываем время выполнения сценария</span><br />
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;execution took: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#40;</span><a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$start_time</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot; seconds.&quot;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>На первый взгляд это может показаться тривиальным. Вы просто добавили код на самой нижней части сценария, и он работает до его завершения. Однако, если вы никогда не вызовите функцию <strong>exit();</strong>, то код никогда не будет работать. Кроме того, если существует фатальная ошибка, либо, если сценарий прекращен пользователем (Был нажат стоп в браузере), опять-таки, может не работать:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$start_time</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/register_shutdown_function"><span style="color: #990000;">register_shutdown_function</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'my_shutdown'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Ваш код</span><br />
<span style="color: #666666; font-style: italic;">// ...</span><br />
<br />
<span style="color: #000000; font-weight: bold;">function</span> my_shutdown<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$start_time</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;execution took: &quot;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#40;</span><a href="http://www.php.net/microtime"><span style="color: #990000;">microtime</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$start_time</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">&quot; seconds.&quot;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<h3>Заключение</h3>
<p>Вот такими нехитрыми методами можно реализовать те или иные задачи в повседневном кодинге.</p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/php/9-poleznyx-php-funkcij.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Проверка состояния сервера на онлайн</title>
		<link>http://acdel.name/php/proverka-sostoyaniya-servera-na-onlajn.html</link>
		<comments>http://acdel.name/php/proverka-sostoyaniya-servera-na-onlajn.html#comments</comments>
		<pubDate>Fri, 06 Aug 2010 20:35:50 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Uptime]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=19</guid>
		<description><![CDATA[Простой скрипт на PHP, для проверки веб-сайта или IP на онлайн или оффлайн. Использовать скрипт очень просто. Все, что вам нужно сделать, это указать URL сайта или IP-адрес. Все реализовано с помощью простой функции fsockopen(); Функция: 123456789function GetServerStatus&#40;$site, $port&#41; &#123; $status = array&#40;&#34;OFFLINE&#34;, &#34;ONLINE&#34;&#41;; $fp = @fsockopen&#40;$site, $port, $errno, $errstr, 2&#41;; if &#40;!$fp&#41; &#123; &#160;<a href="http://acdel.name/php/proverka-sostoyaniya-servera-na-onlajn.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Простой скрипт на PHP,  для проверки веб-сайта или IP на онлайн или оффлайн. Использовать скрипт очень просто. Все, что вам нужно сделать, это указать URL сайта или IP-адрес. Все реализовано с помощью простой функции <strong>fsockopen();</strong></p>
<p>Функция:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> GetServerStatus<span style="color: #009900;">&#40;</span><span style="color: #000088;">$site</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;OFFLINE&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;ONLINE&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><a href="http://www.php.net/fsockopen"><span style="color: #990000;">fsockopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$site</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errno</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errstr</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span><br />
&nbsp; <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #000088;">$status</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Использование:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> &nbsp;GetServerStatus<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'http://domen.ru'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">80</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> &nbsp;GetServerStatus<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'123.123.123.123'</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">80</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/php/proverka-sostoyaniya-servera-na-onlajn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP запросы без CURL</title>
		<link>http://acdel.name/php/http-zaprosy-bez-curl.html</link>
		<comments>http://acdel.name/php/http-zaprosy-bez-curl.html#comments</comments>
		<pubDate>Fri, 06 Aug 2010 12:05:47 +0000</pubDate>
		<dc:creator>acdel</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://acdel.name/?p=13</guid>
		<description><![CDATA[Простой пример использования объекта для HTTP запроса в обход CURL. Для этого используем функцию 1stream_context_create с помощью которой формируем строки, затем используем 1fopen и получаем ответ с помощью 1stream_get_contents Далее собственно сам класс: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899class Custom_Http_Request &#123; &#160; &#160; private $_url; &#160; &#160; private $_body; &#160; &#160; private $_method = 'POST'; &#160; &#160; private $_headers =<a href="http://acdel.name/php/http-zaprosy-bez-curl.html" class="read-more">Читать далее &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Простой пример использования объекта для HTTP запроса в обход CURL. </p>
<p>Для этого используем функцию</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/stream_context_create"><span style="color: #990000;">stream_context_create</span></a></div></td></tr></tbody></table></div>
<p>с помощью которой формируем строки, затем используем</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a></div></td></tr></tbody></table></div>
<p>и получаем ответ с помощью</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.php.net/stream_get_contents"><span style="color: #990000;">stream_get_contents</span></a></div></td></tr></tbody></table></div>
<p>Далее собственно сам класс:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;height:400px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> Custom_Http_Request<br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_url</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_body</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_method</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'POST'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_headers</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_response</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$_stream</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$body</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Both URL and BODY are required '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">.</span> <span style="color: #0000ff;">'for fetching the request.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_url &nbsp;<span style="color: #339933;">=</span> <span style="color: #000088;">$url</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_body <span style="color: #339933;">=</span> <span style="color: #000088;">$body</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setMethod<span style="color: #009900;">&#40;</span><span style="color: #000088;">$method</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'POST'</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$method</span> <span style="color: #339933;">||</span> <span style="color: #0000ff;">'GET'</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$method</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_method <span style="color: #339933;">=</span> <span style="color: #000088;">$method</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Invalid method set.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> addHeader<span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a> <span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_headers<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$header</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'The headers are empty.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getMethod<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_method<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getBody<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_body<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getHeaders<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_headers<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getResponse<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/is_null"><span style="color: #990000;">is_null</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_stream<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_openStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/is_null"><span style="color: #990000;">is_null</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><a href="http://www.php.net/stream_get_contents"><span style="color: #990000;">stream_get_contents</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_stream<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">false</span> <span style="color: #339933;">===</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'It is not possible to '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">.</span> <span style="color: #0000ff;">'read from the response.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_response<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _assemble<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$params</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'http'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'method'</span> &nbsp;<span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_method<span style="color: #339933;">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">'content'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_body<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_headers<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$params</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'http'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'header'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_headers<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <a href="http://www.php.net/stream_context_create"><span style="color: #990000;">stream_context_create</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> _openStream<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_stream <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><a href="http://www.php.net/fopen"><span style="color: #990000;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_url<span style="color: #339933;">,</span> <span style="color: #0000ff;">'rb'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_assemble<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_stream<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'It was not possible to '</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;connect to <span style="color: #006699; font-weight: bold;">{$this-&gt;_url}</span>.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Будет полезно тем, кому попался хостинг без cURL. </p>
]]></content:encoded>
			<wfw:commentRss>http://acdel.name/php/http-zaprosy-bez-curl.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
