PDA

Просмотр полной версии : WebIcqLite class & cron



frog
28.04.2011, 11:12
День добрый, господа!

есть php скрипт, который, по сути, - icq бот, основанный на классе WebIcqLite. его задача сделать выборку из БД в соответсвии с определенными условиями, сформировать сообщения и разослать в аськи нескольким группам пользователей моего сайта. (1 группа - сообщение #1, 2я группа - сообщение #2, и т.д.) при рассылке сообщений срабатывают несколько счетчиков для подсчета результатов деятельности.

положил этот скрипт в корень сайта (public_html) и обращаюсь к скрипту хттп запросом напрямую: http://site.ru/icq.php

что интересно, cms сообщает, что страница не найдена, но, тем не менее скрипт свою задачу выполняет корректно: сообщения рассылаются ровно такие и в том кол-ве, как и должно быть. по завершению работы скрипта, записывается корректный отчет в бд, как и задумано.

первый вопрос: как такое может быть? (страница не найдена, но скрипт срабатывает)

далее вешаю скрипт на планировщик cron - получаю ошибки "socket_connect() failed. Reason: () Success"

поковырял класс, чтобы понять на каком этапе срабатывает блок и понял, что это в районе вот этой функции:



function open($url = array('login.icq.com', 80))
{
$this->socet = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($this->socet < 0 || $this->socet === false)
{
$this->error = "socket_create() failed: reason: " . socket_strerror($this->socet);
return false;
}
$result = socket_connect($this->socet, gethostbyname($url[0]), $url[1]);
if ($result < 0 || $result === false)
{
$this->error = "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket));
return false;
}
return true;
}


потряс хостера - говорит, что порт 80 открыт и даже сделал ребут сервисов хостинга, в т.ч. и тех, что связаны с кроном. но проблема не изчезла. хостинг линукс, все включено.

может кто сталкивался с подобным, объясните, пожалуйста, что крон делает такого, что не может достучаться до сервера icq? в то время, как хттп запрос запускает выполнение скрипта.

спросил бы у разработчика класса, да не поддерживается больше этот класс. только PRO версия.

буду признателен за помощь.