<?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>Poetry of Programming &#187; PHP</title>
	<atom:link href="http://www.poetryofprogramming.com/pl/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.poetryofprogramming.com</link>
	<description>Because coding is art</description>
	<lastBuildDate>Wed, 15 Apr 2009 15:05:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rozwiązanie problemu z &#8220;Maximum execution time exceeded&#8221; w PHP</title>
		<link>http://www.poetryofprogramming.com/pl/php/php-maximum-execution-time-exceeded-error-workaround/</link>
		<comments>http://www.poetryofprogramming.com/pl/php/php-maximum-execution-time-exceeded-error-workaround/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 13:01:03 +0000</pubDate>
		<dc:creator>Krzysztof Karolczak</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.poetryofprogramming.com/uncategorized/php-maximum-execution-time-exceeded-error-workaround/</guid>
		<description><![CDATA[Komunikat krytycznego wyjątku PHP Maximum execution time of 30 seconds exceeded pojawiający się, gdy czas wykonania naszej aplikacji przekroczy 30 sekund, może być bardzo uciążliwy przy odpalaniu &#8220;cięższych&#8221; skryptów na serwerze, np. przy obróbce dużej ilości danych. Błąd ten jest również częstym gościem na ekranach tych, którzy używają serwerów Apacha zainstalowanych na systemach Windowsowych  [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Komunikat krytycznego wyjątku PHP <em>Maximum execution time of 30 seconds exceeded </em>pojawiający się, gdy czas wykonania naszej aplikacji przekroczy 30 sekund, może być bardzo uciążliwy przy odpalaniu &#8220;cięższych&#8221; skryptów na serwerze, np. przy obróbce dużej ilości danych. Błąd ten jest również częstym gościem na ekranach tych, którzy używają serwerów Apacha zainstalowanych na systemach Windowsowych <img src='http://www.poetryofprogramming.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  (choćby i przy testowaniu projektów Symfony na domowym PC). Jednakże istnieje kilka szybkich i łatwych sposobów by zaradzić tej niedogodności <img src='http://www.poetryofprogramming.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !<span id="more-12"></span></p>
<p align="justify"><strong>Rozwiązanie 1 &#8211; Gdy mamy dostęp do plików konfiguracyjnych PHP. </strong></p>
<p align="justify">Jeśli możemy wyedytować pliki konfiguracyjne PHP to problem sprowadza się jedynie do zmiany jednej linijki w PHP.ini. Plik ten zanjduje się zazwyczaj w głównym katalogu PHP (np. w moje instalacji PHP WAMP jest on w <em>C:\wamp\bin\php\php5.2.5)</em>, wystarczy go otworzyć i odnaleźć linijkę:</p>
<blockquote><p>max_execution_time = 30</p></blockquote>
<p align="justify">Zmiana domyślnych 30 sekund na powiedzmy 120 powinna rozwiązać problem dla większości skryptów (normalnych skryptów <img src='http://www.poetryofprogramming.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Jedyne co nam pozostało to restart serwera www i jesteśmy w domku.</p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-5856107143683355";
google_ad_slot = "0824560404";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p><strong>Rozwiązanie 2 &#8211; Na maszynie zdalnej.</strong></p>
<p align="justify">Jest taka ładna funkcja PHP, która zwie się <span class="methodname"><em><strong><strong>set_time_limit ( </strong></strong>int $sec<strong><strong> )</strong></strong></em>, każde jej wywołanie ustawia licznik timeoutu na żądaną wartość (w sekundach) co oznacza że skrypt będzie mógł działać od teraz przez <em>$sec </em>sekund. Wywołanie <em><strong>set_time_limit(0) </strong></em>znosi ograniczenie czasu wykonania aplikacji.</span></p>
<p align="justify">Niestety funkcja ta nie będzie działać, jeśli PHP na serwerze działa w <em>trybie bezpiecznym</em> (<em>safe mode)</em>. Więcej szczegółów można znaleźć w <a href="http://php.net/set_time_limit" target="_blank">podręczniku PHP</a>.</p>
<p><strong> Timeout i serwery WWW <img src='http://www.poetryofprogramming.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></p>
<p align="justify">Warto wspomnieć iż serwery www również mają określony maksymalny dopuszczalny czas wykonania zapytania, np. dla Apacha domyślna wartość wynosi 300 sekund. 6 minut to więcej niż będzie nam potrzebne w 99,99% przypadków (czy w obecnych czasach wytrzymalibyście czekanie 5 minut aż się otworzy jakaś strona? <img src='http://www.poetryofprogramming.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), ale istnieje oczywiście możliwość zmiany tych ustawień. Wystarczy odszukać linijkę zaczynającą sie od słowa <em>Timeout</em> w pliku <em>httpd-default.conf </em>który znajduje się razem z innym plikami konfiguracyjnymi Apacha (np. u mnie jest to <em>C:\wamp\bin\apache\apache2.2.6\conf\extra</em>).</p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-5856107143683355";
google_ad_slot = "0824560404";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.poetryofprogramming.com/pl/php/php-maximum-execution-time-exceeded-error-workaround/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
