Скрипт WP Cron не обновляет все сообщения в цикле


У меня была проблема с этим фрагментом сценария уже месяц http://pastebin.com/f6LqgqQS . То, что должен делать скрипт, - это перебирать все мои сообщения, извлекать количество лайков из графика facebook и обновлять с его помощью мету сообщения.

Теперь проблема, с которой я так долго сталкивался, заключается в том, что не все мои сообщения были обновлены. Это работало нормально, когда у меня было 5 сообщений или около того, но как только я достиг 60+, старые сообщения остались без изменений. Они действительно обновились после хотя, но это может занять более 4 дней, хотя wp_cron установлен на почасовую (и я знаю, что для этого нужны посетители).

Теперь я всегда думал, что graph api был виновником и что facebook ограничил мое количество запросов, но после некоторого тестирования с запуском скрипта на init вместо этого, похоже, что wp_cron вызывал проблему. Я даже отключил wp_cron сейчас и запускаю его из панели управления с помощью cronjob, и до сих пор он отлично работал.

Но в проблема сейчас в том, что у меня действительно нет способа подтвердить, что скрипт действительно работает правильно, и если wp_cron был виновником в конце концов, так как мои поиски ничего не дали. Поэтому мне интересно, может ли кто-то более опытный здесь взглянуть на сценарий и выяснить, действительно ли wp_cron была проблема в конце концов.

Author: Tony Fire, 2014-01-28

1 answers

Процесс wp-cron выполняется как веб-запрос. Процессы PHP, запускаемые из Интернета, обычно имеют ограничение по времени выполнения, например, 60 секунд или около того. Процессы, выполняемые как процесс командной строки (например, из реального cron), не имеют такого ограничения.

Итак, проблема здесь в том, что сценарий выполняется слишком долго и его убивают. Для этого нет исправления, wp-cron не предназначен для выполнения длительных пользовательских сценариев.

И если вы будете продолжать использовать API Graph facebook 60 раз в час, они будут в конце концов, заблокируйте вас. Уменьшите масштаб, вы должны получать эту информацию не чаще одного раза в день.

Еще лучше, напишите сценарий так, чтобы он обновлял информацию только для тех сообщений, когда к ним действительно обращались в последний день или около того, и просто использовал кэшированную информацию в остальное время.

 1
Author: Otto, 2014-01-29 02:53:08