У меня есть задание cron, которое вызывает скрипт, который выполняет итерации через некоторые элементы и отправляет их в виде сообщений в Facebook Graph API каждую минуту. Проблема в том, что каждый вызов занимает несколько секунд. Если в течение одной минуты в API будет отправлено более 10 сообщений, сценарий продлится более минуты, а затем начнет вызывать проблемы, когда скрипт снова начнет работать в следующую минуту.Вызов функции несколько раз, не дожидаясь ее завершения
Общий процесс таков: 1. Каждый сообщений facebook профиля каждый час 2. Каждый из этих профилей имеет «разноски минуты», которая является минутой часа, что они размещены на 3. А Задача cron запускается каждую минуту, чтобы узнать, какие профили должны быть размещены, каждую минуту, а затем сообщения к ним.
Мой вопрос: возможно ли продолжить выполнение скрипта сразу после вызова $ facebook-> api (...) метод ниже, а не ждать его завершения до продолжения? Чтобы он мог отправлять сообщения всем профилям в течение данной минуты, а не потенциально подвергать риску слишком много профилей для отправки и сценарию, превышающему 60 секунд.
$profilesThatNeedToBePostedTo = getProfilesToPostTo(date(i));
foreach($profilesThatNeedToBePostedTo as $profile)
{
$facebook->api($endPoint, 'POST', $postData); // $postData and $endPoint omitted for brevity
}
Мне нужно, чтобы все они были отправлены в ту минуту, что им нужно. База данных хранит поле posting_minute (от 0 до 59) и каждую минуту, а профили для текущей минуты часа извлекаются, а затем публикуются. Так, например, если это 10:15 утра, а сценарий работает и отправляет 9 элементов, у которых есть posting_minute из 15, и еще есть еще 5 сообщений, это не сработает, так как в следующую минуту будут тянуть только сообщения, которые были опубликовано в 10:16. –
Я бы взял все сообщения, необходимые для публикации, и поместил их в очередь. И чем другой cron будет нести ответственность за публикацию данных на Facebook Graph. Это безопасный способ решения таких проблем. Так что если что-то пойдет не так или, facebook не отвечает. Вы знаете, что вам нужно для публикации, исходя из того, что находится в очереди. – Roninio