И еще одна вещь, съевшая у меня половину заслуженного выходного… Иногда встречаются задачи, когда надо по ходу работы постоянно проверять pagarank обрабатываемых страниц. Я для этого дела привык использовать старый добрый класс от David Walsh , однако не так давно мной было замечено, что при выполнении всякого рода батч-проверок PR (проще говоря, когда нужно пробить PR целой кучи страниц) скрипт зависает на стадии исполнения класса без всяких на то комментариев, что не очень приятно. После детального изучения выопроса выяснилось, что такое происходит тогда, когда сокет отваливается в неподходящий момент (что вполне ожиданно, так как, само-собой батч-издевательства над гуглевским сервисами приходится производить через прокси, а прокси бывают разными). Итак, для того что бы скрипт все-таки отлипал и продолжал в таких случаях проверку дальше в него были мной внесены следующие изменения:

1)
$socket = fsockopen(“toolbarqueries.google.com”, 80, $errno, $errstr, 30);
заменено на:
$socket = fsockopen(“toolbarqueries.google.com”, 80);

2)
while(!feof($socket))
{ $data = fgets($socket, 128);
заменено на:
while((!feof($socket)) AND (socket_get_status($socket)['timed_out'] != 1))
{ $data = @fgets($socket);

Кто в теме, тому объяснять не надо, кто не в теме – тем более, но, в общем, теперь пэйжранки чекаются как звери. )))

Share on TwitterShare on MyspaceShare via email