<?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>webbricks &#187; CakePHP 1.1</title>
	<atom:link href="http://blog.grzegorzpawlik.com/tag/cakephp-11/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.grzegorzpawlik.com</link>
	<description>Doświadczenie, to coś, co zdobywamy tuż po chwili w której było nam potrzebne ...</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:09:24 +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>Przyspieszyć cake 1.1.x</title>
		<link>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/</link>
		<comments>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 20:12:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.1]]></category>
		<category><![CDATA[wydajność]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=60</guid>
		<description><![CDATA[Przy okazji usprawnień dla portalu dobrzemieszkaj.pl i zabawy z xdebug.profiler udało mi się znaleźć ciekawe wąskie gardło w cakePHP. Niestety jego usunięcie wymaga ingerencji w core frameworku, ale z uwagi na to, że wersja 1.1 nie będzie już rozwijana, a &#8230; <a href="http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Przy okazji usprawnień dla portalu <a href="http://dobrzemieszkaj.pl/">dobrzemieszkaj.pl</a> i zabawy z xdebug.profiler udało mi się znaleźć ciekawe wąskie gardło w cakePHP.<br />
Niestety jego usunięcie wymaga ingerencji w core frameworku, ale z uwagi na to, że wersja 1.1 nie będzie już rozwijana, a do tego przy tak zaawansowanym poziomie prac nad portalem na pewno nie będziemy migrować do żadnej innej nowiści &#8211; uważam, że można było sobie pozwolić na grzebanie w core.</p>
<p><span style="font-size: large;">O co chodzi?</span><br />
Konstruktor modelu wywołuje metodę Model::setSource(), która przede wszystkim sprawdza, czy wśród wszystkich tabel jest ta, z którą powiązany jest dany model. W portalu na stronie głównej było ok 50 wywołań konstruktorów modeli, a co za tym idzie- również Model::serSource.</p>
<p>Wszystko byłoby w porządku, gdyby nie to, że ta funkcja zabezpiecza się przed przypadkiem niestosowania się w 100% do konwensji cake. Dlatego wszystkie elementy (nazwy tabel) traktowała funckją strtolow().</p>
<p>Z uwagi na to, że w naszym projekcie jest 150 tabel, to przebiegnięcie po tablicy 150 stringów i zamiana na lowercase odbywała się 50 razy, czy razem było&nbsp; 750 stringów było zamienianych na lowercase. Sęk w tym, że operacja nie była potrzebna, gdyż wszystkie nasze tabele są lowercase.<br />
Dlatego dobrą opcją było zamiana cake/libs/model/model_php5.php:523 z<br />
<code lang="php"><br />
if (is_array($sources) &amp;&amp; !in_array(low($prefix . $tableName), array_map('low', $sources))) {<br />
</code><br />
na<br />
<code lang="php"><br />
if (is_array($sources) &amp;&amp; !in_array($prefix . $tableName,&nbsp; $sources)) {<br />
</code><br />
proste jak budowa cepa, a ubyło kolejne ćwierć sekundy na generowanie strony :)</p>
<p>W prawdzie nie jest to oszołamiające przyspieszenie, ale przy bardzo wielu zapytaniach na raz &#8211; przydatne.</p>
<p>Edit: członkini teamu cake <strong>Jitka Koukalova</strong> potwierdziła, że ten fragment kodu jest obejściem, dzięki któremu cake działa również z php4. Twierdzi też, że to jeden z wielu elementów, bez których cakePHP będzie działał szybciej, ale tylko na php5. </p>
<blockquote><p>You discovered one of many workarounds which are necessary for PHP4. <br />
It is just one of many things which will make PHP5 only CakePHP much <br />
faster.   </p></blockquote>
<p>Nic tylko dalej szukać i usprawniać ;)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2009/03/przyspieszyc-cake-11x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HttpSocket z cake 1.2 w cake 1.1.x</title>
		<link>http://blog.grzegorzpawlik.com/2008/08/httpsocket-z-cake-12-w-cake-11x/</link>
		<comments>http://blog.grzegorzpawlik.com/2008/08/httpsocket-z-cake-12-w-cake-11x/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:59:00 +0000</pubDate>
		<dc:creator>Greg</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[CakePHP 1.1]]></category>
		<category><![CDATA[CakePHP 1.2]]></category>
		<category><![CDATA[HttpSocket]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://meta.vipserv.org/blog.grzegorzpawlik.com/?p=31</guid>
		<description><![CDATA[Jeśli potrzebujesz funkcjonalności zapewnianej przez HttpSocket(na przykład musisz pracować na danych w xml-u dostarczanych choćby przez kanał rss), a z jakichś powodów nie możesz korzystać/migrować na CakePhp1.2, zastosuj poniższą sztuczkę: Z biblioteki CakePhp1.2 (cake/libs/) do katalogu vendors w Twojej aplikacji &#8230; <a href="http://blog.grzegorzpawlik.com/2008/08/httpsocket-z-cake-12-w-cake-11x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jeśli potrzebujesz funkcjonalności zapewnianej przez HttpSocket(na przykład musisz pracować na danych w xml-u dostarczanych choćby przez kanał rss), a z jakichś powodów nie możesz korzystać/migrować na CakePhp1.2, zastosuj poniższą sztuczkę:</p>
<p>Z biblioteki CakePhp1.2 (cake/libs/) do katalogu vendors w Twojej aplikacji (1.1.x) skopiuj pliki<br />
- socket.php<br />
- http_socket.php</p>
<p>W pliku socket.php gdzieś na początku, przed definicją klasy jest linia<br />
uses(&#8216;validation&#8217;);<br />
zakomentuj ją (lub usuń) .<br />
Z kolei w pliku http_socket.php linię<br />
uses( &#8216;socket&#8217;,  &#8216;set&#8217;);<br />
Zamień na<br />
vendor(&#8216;socket&#8217;);<br />
uses(&#8216;set&#8217;);</p>
<p>Sposób działający pomiedzy wersją 1.2.0.6311 beta a 1.1.16.5421.<br />
Powodzenia<br />
<ins datetime="2009-06-29T08:17:53+00:00"><br />
Uwaga: działa jedynie przy zapytaniach GET. Dla POST brakuje potrzebnych klas i trzeba by nieco pogrzebać w kodzie HttpSocket, żeby można było wywoływać zapytania POST.<br />
</ins></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.grzegorzpawlik.com/2008/08/httpsocket-z-cake-12-w-cake-11x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

