PHP守护进程向Facebook、Twitter等提交最新状态更新
我正在构建一个应用程序,允许用户将他们的facebook、twitter、linkedin帐户链接到我的应用程序,然后通过我的应用程序向所有这些网站发布更新。此外,用户还可以“发布日期”状态更新。他们可以设置更新的日期和时间,这将导致更新仅在指定日期发布到请求的站点,而不是立即发布到请求的站点 我使用cron作业可以很好地完成这项工作,该作业提取所有尚未发布的更新(有一个标志指示更新是否已在数据库中发布),然后发布。我使用cron每分钟运行一次这个过程。 现在我的问题是,如果同时设置了足够多的更新,我会遇到PHP最大化执行时间的问题。我的直接工作是获取所有具有PHP守护进程向Facebook、Twitter等提交最新状态更新,php,cron,daemon,Php,Cron,Daemon,我正在构建一个应用程序,允许用户将他们的facebook、twitter、linkedin帐户链接到我的应用程序,然后通过我的应用程序向所有这些网站发布更新。此外,用户还可以“发布日期”状态更新。他们可以设置更新的日期和时间,这将导致更新仅在指定日期发布到请求的站点,而不是立即发布到请求的站点 我使用cron作业可以很好地完成这项工作,该作业提取所有尚未发布的更新(有一个标志指示更新是否已在数据库中发布),然后发布。我使用cron每分钟运行一次这个过程。 现在我的问题是,如果同时设置了足够多的更
post_timestamp
的更新,并尝试发布它们;因此,如果在特定的一分钟内,某些更新尚未发送,则下一次cron运行将尝试发送它,如果它仍在最大执行时间限制内
我知道这是一个非常蹩脚的方式来实现我想要的。因此,我计划有一个守护进程,持续运行并发布所有过期的更新。
实现这一目标的最佳方式是什么?我还需要为我正在从事的另一个项目使用这个守护进程方法。在此方面的任何帮助都将不胜感激……:P
提前感谢。Gearman可能就是您想要的:我已经编写了许多基于PHP的系统,它们可以做类似的事情-长时间运行的进程不能从频繁的Cron作业中运行,因为它不能并发运行 这是一个三阶段的过程
#!/bin/sh
# this file is runSocialSend.sh
BASEURL=http://alister.example.com
URL=$BASE/path/actions/send-to-social-sites.php
# don't store the output
WGET="/usr/bin/wget -O /dev/null -- "
# wait this many seconds between runs
SLEEP=20
# could also just run it from the CLI - php -f ..../send-to-social-sites.php
$WGET $URL
sleep $SLEEP
# and loop round again to restart...
exec $0
正确运行上述程序的第一部分更简单
#!/bin/sh
killall runSocialSend.sh
nohup ./runSocialSend.sh > /dev/null &
确切地说,杀死runSocialSend.sh脚本的任何其他实例,然后重新启动它,断开与“控制台”的连接,在后台运行它