<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: прибить perl-скрипт парсинга, если соединение оборвалось</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html</link>
    <description>добрый день&lt;br&gt;на перле через use Socket парсю сайт через крон&lt;br&gt;если соединение обрывается, скрипт тупо виснет в ожиданиях чуда, а потом за ним запускается следующий скрипт (по крону), итого висит уже 2.. 3.. 10..&lt;br&gt;пробовал connect(SOCK,...)or die; но чё-то не хочет&lt;br&gt;как правильно его автоматически прибить?&lt;br&gt;</description>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (greenwar)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#11</link>
    <pubDate>Thu, 30 Dec 2010 20:09:31 GMT</pubDate>
    <description>&amp;gt;&amp;gt; LWP убог &lt;br&gt;&amp;gt; А в чем именно?&lt;br&gt;&amp;gt; Мне интересно ваше мнение.&lt;br&gt;&lt;br&gt;по моим тестам тормознее подключения напрямую&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (pavlinux)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#10</link>
    <pubDate>Thu, 30 Dec 2010 09:25:00 GMT</pubDate>
    <description>&amp;gt; добрый день &lt;br&gt;&amp;gt; на перле через use Socket парсю сайт через крон &lt;br&gt;&amp;gt; если соединение обрывается, скрипт тупо виснет в ожиданиях чуда, а потом за &lt;br&gt;&amp;gt; ним запускается следующий скрипт (по крону), итого висит уже 2.. 3.. &lt;br&gt;&amp;gt; 10..&lt;br&gt;&lt;br&gt;в crontab&lt;br&gt;&lt;br&gt;* 10 * * * root killall -9 perlscript.pl; sleep 5; /usr/local/perlscript.pl;&lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (Sugar)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#9</link>
    <pubDate>Thu, 30 Dec 2010 08:51:25 GMT</pubDate>
    <description>&amp;gt; LWP убог &lt;br&gt;&lt;br&gt;А в чем именно?&lt;br&gt;Мне интересно ваше мнение.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (greenwar)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#8</link>
    <pubDate>Wed, 15 Dec 2010 19:40:05 GMT</pubDate>
    <description>спасибо, работает&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (cryo)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#7</link>
    <pubDate>Wed, 15 Dec 2010 14:04:06 GMT</pubDate>
    <description>Где-то вот так:&lt;br&gt;&lt;br&gt;eval &#123;&lt;br&gt;    local $SIG&#123;ALRM&#125; = sub &#123; die &quot;alarm&#092;n&quot; &#125;; # NB: &#092;n required&lt;br&gt;    alarm $timeout;&lt;br&gt; ... ЗДЕСЬ ВСЯ РАБОТА С СОКЕТОМ: ОТКРЫТИЕ, ЧТЕНИЕ, ЗАКРЫТИЕ ... &lt;br&gt;    alarm 0;&lt;br&gt;&#125;;&lt;br&gt;if ($&#064;) &#123;&lt;br&gt;    die unless $&#064; eq &quot;alarm&#092;n&quot;; # propagate unexpected errors&lt;br&gt;    # timed out&lt;br&gt;&#125;&lt;br&gt;else &#123;&lt;br&gt;    # didn&apos;t&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#125;; &lt;br&gt;&amp;gt; if ($&#064;) &#123; &lt;br&gt;&amp;gt;     die unless $&#064; eq &quot;alarm&#092;n&quot;; # propagate unexpected &lt;br&gt;&amp;gt; errors &lt;br&gt;&amp;gt;     # timed out &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; else &#123; &lt;br&gt;&amp;gt;     # didn&apos;t &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; а куда тут сам код программы вставлять?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (greenwar)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#6</link>
    <pubDate>Tue, 14 Dec 2010 16:54:43 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; париться. а то на коннект тайм аут, на каждую операцию чтения. &lt;br&gt;&amp;gt; а так раз и все.&lt;br&gt;&amp;gt;    eval &#123; &lt;br&gt;&amp;gt;       local $SIG&#123;ALRM&#125; = sub &#123; die &quot;timeout&#092;n&quot; &#125;; &lt;br&gt;&amp;gt;       alarm($timeout); #implement N second time out&lt;br&gt;&amp;gt;       work(); &lt;br&gt;&amp;gt;       alarm(0); &lt;br&gt;&amp;gt;     &#125;; &lt;br&gt;&amp;gt;     if ( $&#064; ) &#123; print &quot;execute timed &lt;br&gt;&amp;gt; out or error: $&#064;&#092;n&quot; &#125; &lt;br&gt;&lt;br&gt;eval &#123;&lt;br&gt;    local $SIG&#123;ALRM&#125; = sub &#123; die &quot;alarm&#092;n&quot; &#125;; # NB: &#092;n required&lt;br&gt;    alarm $timeout;&lt;br&gt;    $nread = sysread SOCKET, $buffer, $size;&lt;br&gt;    alarm 0;&lt;br&gt;&#125;;&lt;br&gt;if ($&#064;) &#123;&lt;br&gt;    die unless $&#064; eq &quot;alarm&#092;n&quot;; # propagate unexpected errors&lt;br&gt;    # timed out&lt;br&gt;&#125;&lt;br&gt;else &#123;&lt;br&gt;    # didn&apos;t&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;а куда тут сам код программы вставлять?&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (NuINu)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#5</link>
    <pubDate>Tue, 14 Dec 2010 16:09:30 GMT</pubDate>
    <description>&amp;gt; вы уверены что разрыв соединения в действительности имеет место?&lt;br&gt;&amp;gt; да и при использовании LWP::UserAgent тоже все корректно отрабатывается..&lt;br&gt;&amp;gt; впрочем.. можно посмотреть как таймаут сделан тут: http://opennet.ru/base/dev/socket_timeout2.txt.html &lt;br&gt;&lt;br&gt;там в любом месте может протокол &quot;встать&quot;, поэтому вообще рекоменую на всю эту процедуру установить общий тайм аут. и больше о нем не париться. а то на коннект тайм аут, на каждую операцию чтения.&lt;br&gt;&lt;br&gt;а так раз и все.&lt;br&gt;&lt;br&gt;   eval &#123;&lt;br&gt;      local $SIG&#123;ALRM&#125; = sub &#123; die &quot;timeout&#092;n&quot; &#125;;&lt;br&gt;      alarm($timeout); #implement N second time out&lt;br&gt;      work();&lt;br&gt;      alarm(0);&lt;br&gt;    &#125;;&lt;br&gt;    if ( $&#064; ) &#123; print &quot;execute timed out or error: $&#064;&#092;n&quot; &#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (greenwar)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#4</link>
    <pubDate>Tue, 14 Dec 2010 14:54:52 GMT</pubDate>
    <description>&amp;gt; конструкция &lt;br&gt;&amp;gt; while ($newline=&amp;lt;HTTPCMD&amp;gt;)&#123; &lt;br&gt;&amp;gt; print&quot;$newline&#092;n&quot;; &lt;br&gt;&amp;gt; &#125;; &lt;br&gt;&amp;gt; корректно отрабатывает разрыв соединения &lt;br&gt;&amp;gt; вы уверены что разрыв соединения в действительности имеет место?&lt;br&gt;&amp;gt; да и при использовании LWP::UserAgent тоже все корректно отрабатывается..&lt;br&gt;&amp;gt; впрочем.. можно посмотреть как таймаут сделан тут: http://opennet.ru/base/dev/socket_timeout2.txt.html &lt;br&gt;&lt;br&gt;не отрабатывает.&lt;br&gt;разрыв соединения отлично наблюдается по кол-ву одновременно работающих скриптов&lt;br&gt;хотя скрипт успевает отработать ДО того, как следующий запустится&lt;br&gt;да я и руками пускал&lt;br&gt;LWP убог&lt;br&gt;</description>
</item>

<item>
    <title>прибить perl-скрипт парсинга, если соединение оборвалось (Square)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/8963.html#3</link>
    <pubDate>Tue, 14 Dec 2010 12:09:33 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Вероятно нужно включить обработку обрыва коннекта в тело получения сообщений а не &lt;br&gt;&amp;gt;&amp;gt; в начало этой процедуры.&lt;br&gt;&amp;gt;&amp;gt; Каким образом принимаются данные?&lt;br&gt;&amp;gt; while(&amp;lt;SOCK&amp;gt;)&#123;&#125; &lt;br&gt;&amp;gt; $curtime=time(); # перед while &lt;br&gt;&amp;gt; exit if(time() - $curtime &amp;gt; 60); # внутри while &lt;br&gt;&amp;gt; если прошла минута, выход. так штоле предлагаете?&lt;br&gt;&amp;gt; поизящней нет?&lt;br&gt;&lt;br&gt;конструкция&lt;br&gt;while ($newline=&amp;lt;HTTPCMD&amp;gt;)&#123;&lt;br&gt;print&quot;$newline&#092;n&quot;;&lt;br&gt;&#125;;&lt;br&gt;&lt;br&gt;корректно отрабатывает разрыв соединения&lt;br&gt;&lt;br&gt;вы уверены что разрыв соединения в действительности имеет место?&lt;br&gt;&lt;br&gt;да и при использовании LWP::UserAgent тоже все корректно отрабатывается..&lt;br&gt;впрочем.. можно посмотреть как таймаут сделан тут: http://opennet.ru/base/dev/socket_timeout2.txt.html&lt;br&gt;</description>
</item>

</channel>
</rss>
