<?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>Статьи про web-разработку, PHP, CakePHP. &#187; php</title>
	<atom:link href="http://blog.michas.ru/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.michas.ru</link>
	<description>php, mysql, javascript, cakephp, jquery</description>
	<lastBuildDate>Wed, 24 Aug 2011 15:04:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CakePHP. Перенос на хостинг</title>
		<link>http://blog.michas.ru/2011/08/24/cakephp-move-to-hosting/</link>
		<comments>http://blog.michas.ru/2011/08/24/cakephp-move-to-hosting/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 15:04:54 +0000</pubDate>
		<dc:creator>michas</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[cakephp для начинающих]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[move]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.michas.ru/?p=161</guid>
		<description><![CDATA[На различных форумах часто вижу что люди спрашивают как перенести проект на CakePHP с одного хостинга на другой, или с локальной машины на хостинг. Чтобы без проблем перенести сайт достаточно всего нескольких простых действий: Задаем права 777 для каталога /app/tmp и всех его подкаталогов Удаляем все файлы(только файлы, каталоги оставляем) из каталога /app/tmp/cache В файле [...]]]></description>
			<content:encoded><![CDATA[<p>На различных форумах часто вижу что люди спрашивают как перенести проект на CakePHP с одного хостинга на другой, или с локальной машины на хостинг.<br />
Чтобы без проблем перенести сайт достаточно всего нескольких простых действий:</p>
<ol>
<li>Задаем права 777 для каталога /app/tmp и всех его подкаталогов</li>
<li>Удаляем все файлы(только файлы, каталоги оставляем) из каталога /app/tmp/cache</li>
<li>В файле /app/config/core.php находим строчку &laquo;Configure::write(&#8216;debug&#8217;, 2)&raquo; и проверяем чтобы на месте цифры 2 был ноль</li>
<li>В файле /app/config/database.php меняем имя базы данных и информацию для доступа к ней.(если на новом хостинге эта информация отличается от старой)</li>
</ol>
<p>В большинстве случаев этих простых шагов будет достаточно и ваш сайт заработает.<br />
Если этого не произошло то можно попробовать сделать следующее:</p>
<ol>
<li>В файле /app/config/core.php находим строчку &laquo;Configure::write(&#8216;debug&#8217;, 0)&raquo; и вставляем вместо 0 число 2. Это включит вывод ошибок на сайте</li>
<li>Смотрим логи которые пишет фреймворк в каталоге /app/tmp/logs/</li>
<li>Смотрим лог ошибок вебсервера. Его расположение зависит от используемого вебсервера и его настроек</li>
</ol>
<p>Эти действия позволят вам найти и исправить возможные ошибки.</p>
<p>Так же следует обратить внимание на используемую версию php. В некоторых случаях(к примеру при использовании сторонних классов и библиотек) ваш проект может содержать код который не может быть выполнен установленной версией php.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michas.ru/2011/08/24/cakephp-move-to-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оптимизация PhpShop</title>
		<link>http://blog.michas.ru/2009/06/19/phpshop-optimizatio/</link>
		<comments>http://blog.michas.ru/2009/06/19/phpshop-optimizatio/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:26:35 +0000</pubDate>
		<dc:creator>michas</dc:creator>
				<category><![CDATA[решения проблем]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpshop]]></category>
		<category><![CDATA[идиотизм]]></category>
		<category><![CDATA[оптимизация]]></category>

		<guid isPermaLink="false">http://blog.michas.ru/?p=34</guid>
		<description><![CDATA[Так уж случилось, что один из наших клиентов заказал нам добавить в его интернет магазин несколько десятков тысяч товаров. Магазин у него работал на небезызвестном PHPShop . До этого момента, я с этим «чудом» не встречался. После добавления первых 5000 товаров магазин слег и мог показывать только белую страницу.  Тех поддержка отвечала что это все [...]]]></description>
			<content:encoded><![CDATA[<p>Так уж случилось, что один из наших клиентов заказал нам добавить в его интернет магазин несколько десятков тысяч товаров. Магазин у него работал на небезызвестном <a title="PHPShop" href="http://phpshop.ru/">PHPShop</a> . До этого момента, я с этим «чудом» не встречался. После добавления первых 5000 товаров магазин слег и мог показывать только белую страницу.  Тех поддержка отвечала что это все из-за хостера(MasterHost). Я им поверил и решил опробовать все на локальном веб-сервере. Магазин показывал ту же картину. Причем в списке задач отображалось, что Apache «съедает» 200 Мб оперативной памяти. Пришлось лезть во внутренности…</p>
<p><span id="more-34"></span></p>
<p>После недолгих поисков было обнаружено, что при выводе товаров скрипт не делал запрос к базе, чтобы получить конкретный товар. Оказалось что при запуске скрипта все товары из базы помещаются в глобальный массив, а затем, когда нужен определенный товар, он брался из этого массива. Причем занимался этим почему-то модуль, который по идее должен отвечать за кэширование(cache.inc.php). Мне это показалось очень странным. Переписывать весь скрипт, чтобы данные брались из БД только когда они нужны, было долго (этот глобальный массив использовался очень часто) и не было времени, так как заказчик торопил. Надо было искать другой выход и он был найден.</p>
<p>Необходимо было сделать так, чтобы, данные в массив попадали только при обращении к нему. После недолгих поисков был найден интерфейс ArrayAccess, который позволяет обращаться к объекту как к элементу массива. За пару часов все это было реализовано. Теперь данные в массив попадали только при обращении к нему. Так же дополнительно все полученные данные кешировались чтобы избежать дополнительную нагрузку на MySQL сервер.</p>
<p>Решение проблемы не только восстановило работоспособность магазина, но и уменьшило время генерации страницы в ДВА раза.</p>
<p>Если кому-то интересно посмотреть на код решения проблемы, могу опубликовать его целиком в следующем посте.</p>
<p>Если разработчики PhpShop увидят этот пост, я бы хотел знать, чем они руководствовались, создавая глобальный массив со всеми товарами заранее.<em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michas.ru/2009/06/19/phpshop-optimizatio/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

