我有一个调用脚本的cron作业,该脚本遍历某些项目并每分钟将它们作为帖子提交给Facebook Graph API。问题是,每次通话都需要几秒钟。如果在给定的一分钟内有超过10个帖子要发送到API,则脚本运行时间超过一分钟,然后在下一分钟脚本再次开始运行时开始引发问题。
一般过程是这样的: 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
}
答案 0 :(得分:0)
你在问PHP是否可以进行异步调用。这里有一些解决方案:Asynchronous PHP calls
只是指出没有最可靠的选择。
每次减少超过60秒的次数不限制帖子的数量。但是如果Facebook Graph很慢会发生什么?你是做什么?
或者运行代码60秒,一旦达到60秒的时间,关闭该功能。然后让它再次运行。
答案 1 :(得分:0)
我不确定我是否百分百理解你的问题。你的意思是你想每分钟运行一次cronjob。但是,调用facebook API需要超过1分钟。你的意思是foreach循环可能会延迟你的cronjob吗? 如果是这样,我想知道你是否做了一个正确的cronjob脚本,更好地展示你的cronjob脚本。因为我认为php脚本不应该影响你的sh脚本(cronjob)