Здравствуйте. есть скрипт который парсит новости с другого сайта и записывает в базу моего сайта и закачивает фото новости. Так вот если вызвать этот скрипт самого через браузер ,то все новости и картинки к новостям добавляются на мой сайт, зачищается кэш и подтираются старые записи. (то есть работает как надо) Но если запускается этот скрипт через cron ,то текст всех новостей добавляется в базу , но картинки добавляются только к половине новостей и из этого же скрипта не чиститься кеш (чистить кеш нужно ,так как сайт на битрикс) Права на скрипт 755 ,на папку для фото новостей права 755. В скрипте set_time_limit(0); В чем может быть проблема?
ничего криминального там нет. там парситься rss лента рамблер новостей. Даже на моем сайт у каждой новости подпись ,что эта новость взята с рамблер-новости. Добавлено спустя 15 минут 24 секунды: rss читаю так. может через cron не может прочесть? Код (Text): function RSS_Read($url) { $doc = new DOMDocument(); $doc->load($url); $items = $doc->getElementsByTagName("item"); $RSS_Content = array(); foreach($items as $item) { $y = RSS_Tags($item); array_push($RSS_Content, $y); } return $RSS_Content; } $feeds = RSS_Read("http://news.rambler.ru/rss/business");
RSS это же XML, не? Зачем же DOMDocument, когда есть XML-парсеры в пыхе? Насчет работы - проверяйте, чем отличается вызов при кроне от вызова "нормального". И для крона тоже? Добавлено спустя 59 секунд: Прост, если код работает, то он работает. Значит проблема не в нем, а в том, что отличает вызов по крону от "честного" вызова, только и всего.
DOMDocument выполняется только в браузере? просто в других кусках кода нет того чтобы не смогло работать без браузера. в смысле ,что никаких куки ,авторизаций нет и тд.
В браузере вообще никакой пхп-код не выполняется. Просто гвозди забивают молотком, шурупы ввинчивают шуруповертом. Не наоборот. Гвоздь и шуруп, конечно, похожи на определенном уровне абстракции, равно как HTML похож на XML, и шуруп даже можно загнать молотком, но лучше все же использовать специнстурменты. Иначе бы их просто не создавали. Повторюсь. Если код работает, то он работает. В нем проблем нет. Тем более если он не юзает всякие куки. Более того, он у вас по какой-то причине отрабатывает лишь наполовину. Я ставлю на настройки Крона. В них косяк.
Спасибо. понял. Сейчас запрос с крона такой, он срабатывает.(но как описано выше скрипт срабатывает не до конца.) /usr/local/bin/php -f /home/site/domains/site.com/public_html/parsnews.php >/dev/null 2>&1 Какой то параметр можно в этом запросе добавить или нужно просить хостера ,чтобы он у себя перенастроил ,для того чтобы скрипт до конца срабатывал? Спасибо.
Спасибо за помощь! Написал хостеру ,они посоветовали такой запрос: Код (Text): /usr/local/bin/wget -q -O /dev/null http://site.com/parsnews.php И действительно все работает. Может кому то будет полезно.
Резюмирую: Код (Text): /usr/local/bin/php -f /home/site/domains/site.com/public_html/parsnews.php >/dev/null 2>&1 Запускает скрипт из консоли без участия нжинксов и прочих апачей. Код (Text): /usr/local/bin/wget -q -O /dev/null http://site.com/parsnews.php Стучится на url, по сути примерно тоже самое, что набрать его браузере. В результате http-сервер выполнит скрипт как обычно. Потому разница есть и она значительна, хотя бы те же права: php из консоли может выполнятся от совершенно другого пользователя, которому не хватит 755 на изменения файлов. Отсюда и невозможность сохранения картинок. Недостаточно прав )