<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Комментарии к записи: Задерка между итерациями</title>
	<atom:link href="http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/feed/" rel="self" type="application/rss+xml" />
	<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/</link>
	<description>Ruby, Ruby on Rails, RubyGL и др. ключевые слова</description>
	<lastBuildDate>Wed, 01 Sep 2010 10:04:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Автор: coldFlame</title>
		<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/#comment-132</link>
		<dc:creator>coldFlame</dc:creator>
		<pubDate>Thu, 31 Jul 2008 11:02:18 +0000</pubDate>
		<guid isPermaLink="false">http://coldflame.in.ua/?p=111#comment-132</guid>
		<description>Все правильно, но цикл do-while значит &quot;выполнять, пока&quot; - в данном случае &quot;выполнять, пока *нет* задачи&quot;.

А sleep должен стоять вторым параметром, чтоб при последней итерации он не отрабатывал  - зачем спать, если уже выполнено условие выхода из цикла?

Одним запросом дело не обходится, ибо вся соль в том, что в задачи в базу заносит другой скрипт.</description>
		<content:encoded><![CDATA[<p>Все правильно, но цикл do-while значит &laquo;выполнять, пока&raquo; &#8211; в данном случае &laquo;выполнять, пока *нет* задачи&raquo;.</p>
<p>А sleep должен стоять вторым параметром, чтоб при последней итерации он не отрабатывал  &#8211; зачем спать, если уже выполнено условие выхода из цикла?</p>
<p>Одним запросом дело не обходится, ибо вся соль в том, что в задачи в базу заносит другой скрипт.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Alex</title>
		<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/#comment-131</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 30 Jul 2008 18:09:06 +0000</pubDate>
		<guid isPermaLink="false">http://coldflame.in.ua/?p=111#comment-131</guid>
		<description>Не, ну может конечно я не врубаюсь в семантику цикла из примера, но ИМХО условие для while неправильное :)
Давай упростим и выбосим sleep из условия. Когда должен продолжаться цикл? Видимо пока mysql_fetch_assoc возвращает в $task не FALSE. Ну так это записывается как:
} while ($task); // если напишем !$task, то вылетим после первой итерации в случае непустого рекордсета

Дальше уже подключим sleep:
} while (sleep(1) &#124;&#124; $task); // ну sleep первым чтоб он по принципу вычисления с лева на право участвовал в каждой итерации

Вообще если цикл есть обработка строк из одного запроса, то надо тело цикла переписать:
$result = mysql_query(&#039;...&#039;);
do {
  $task = mysql_fetch_assoc($result);
} while (sleep(1) &#124;&#124; $task);
mysql_free_result($result);</description>
		<content:encoded><![CDATA[<p>Не, ну может конечно я не врубаюсь в семантику цикла из примера, но ИМХО условие для while неправильное :)<br />
Давай упростим и выбосим sleep из условия. Когда должен продолжаться цикл? Видимо пока mysql_fetch_assoc возвращает в $task не FALSE. Ну так это записывается как:<br />
} while ($task); // если напишем !$task, то вылетим после первой итерации в случае непустого рекордсета</p>
<p>Дальше уже подключим sleep:<br />
} while (sleep(1) || $task); // ну sleep первым чтоб он по принципу вычисления с лева на право участвовал в каждой итерации</p>
<p>Вообще если цикл есть обработка строк из одного запроса, то надо тело цикла переписать:<br />
$result = mysql_query(&#8216;&#8230;&#8217;);<br />
do {<br />
  $task = mysql_fetch_assoc($result);<br />
} while (sleep(1) || $task);<br />
mysql_free_result($result);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: coldFlame</title>
		<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/#comment-130</link>
		<dc:creator>coldFlame</dc:creator>
		<pubDate>Wed, 30 Jul 2008 17:26:48 +0000</pubDate>
		<guid isPermaLink="false">http://coldflame.in.ua/?p=111#comment-130</guid>
		<description>Нет-нет, do-while выполняется, пока условие истинно, так что именно !$task.

А насчет второго замечания вы правы. Только еще правильнее будет
} while (!$task &amp;&amp; !sleep(1))
или, по правилу де Моргано
} while (!($task &#124;&#124; sleep(1))

Спасибо, обновил пост.</description>
		<content:encoded><![CDATA[<p>Нет-нет, do-while выполняется, пока условие истинно, так что именно !$task.</p>
<p>А насчет второго замечания вы правы. Только еще правильнее будет<br />
} while (!$task &#038;&#038; !sleep(1))<br />
или, по правилу де Моргано<br />
} while (!($task || sleep(1))</p>
<p>Спасибо, обновил пост.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Alex</title>
		<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/#comment-129</link>
		<dc:creator>Alex</dc:creator>
		<pubDate>Wed, 30 Jul 2008 13:55:00 +0000</pubDate>
		<guid isPermaLink="false">http://coldflame.in.ua/?p=111#comment-129</guid>
		<description>} while (!$task &#124;&#124; sleep(1));
- чето тут перемудрили. Такой цикл сработает с единственной задержкой после последней итерации (которая вероятно тоже будет единственной из-за !$task). ПХП ж не расчитывает второй аргумент ИЛИ если первый дал 1.
ИМХО правильнее было бы так:
} while (sleep(1) &#124;&#124; $task);</description>
		<content:encoded><![CDATA[<p>} while (!$task || sleep(1));<br />
- чето тут перемудрили. Такой цикл сработает с единственной задержкой после последней итерации (которая вероятно тоже будет единственной из-за !$task). ПХП ж не расчитывает второй аргумент ИЛИ если первый дал 1.<br />
ИМХО правильнее было бы так:<br />
} while (sleep(1) || $task);</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Алексей Токарь</title>
		<link>http://leonid.shevtsov.me/30-07-2008/zaderka-mezhdu-iteraciyami/#comment-128</link>
		<dc:creator>Алексей Токарь</dc:creator>
		<pubDate>Wed, 30 Jul 2008 09:11:05 +0000</pubDate>
		<guid isPermaLink="false">http://coldflame.in.ua/?p=111#comment-128</guid>
		<description>Данный подход имеет как минимум две проблемы.
первая - при беглом просмотре кода, не всегда удастся заметить этот sleep
вторая - сама неочевидность данного решения. Человек не знающий о возвращаемом значении этого sleep будет долго разбираться что же это тут такое происходит

А ведь хорошим тоном считается писать код для людей а не для машин :)</description>
		<content:encoded><![CDATA[<p>Данный подход имеет как минимум две проблемы.<br />
первая &#8211; при беглом просмотре кода, не всегда удастся заметить этот sleep<br />
вторая &#8211; сама неочевидность данного решения. Человек не знающий о возвращаемом значении этого sleep будет долго разбираться что же это тут такое происходит</p>
<p>А ведь хорошим тоном считается писать код для людей а не для машин :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
