php可以一直做吗,php cron作业可以运行多久/我做得对吗?

博客讨论了长时间运行的PHP脚本的内存管理和可扩展性问题.建议通过采用分而治之的策略,如任务队列和工作进程,将同步请求转变为异步处理,以提高效率和可扩展性。这种方法包括一个负责获取数据的脚本和一个处理队列中工作的脚本,使得系统能够更好地应对大量URL处理和延迟。
摘要由CSDN通过智能技术生成

长时间运行编写良好的PHP脚本没有任何问题.我有一些脚本几乎连续运行了好几个月.只是看你的内存使用情况,你应该没事.

也就是说,您的架构非常基础,并且不太可能扩展.

您可以考虑从一个庞大的单片脚本转变为分而治之的策略.例如,听起来你的脚本正在对每个URL进行同步请求.如果这是真的,那么大部分7小时的运行时间都在等待来自某个远程服务器的响应.

在一个理想的世界里,你不会写这种东西PHP.一些处理线程并且可以使用回调轻松执行异步http请求的语言将更适合.

也就是说,如果我在PHP中这样做,我的目标是创建一个脚本,让N个孩子从URL中获取数据,然后将响应数据粘贴到某种工作队列中,然后再使用另一个脚本一直运行,处理它在队列中找到的任何工作.

然后你只需要你的fetcher-script-manager一小时运行一次,它管理一些获取数据的工作进程(在parellel中,所以延迟不会杀死你),并将工作粘在队列上.然后,queue-cruncher会查看队列中的工作并对其进行处理.

根据您实现队列的方式,这可以很好地扩展.您可以使用多个框来获取远程数据,并将其粘贴在某个中央队列框中(使用mysql或memcache或其他任何方式实现队列).你甚至可以想象有多个盒子从队列中完成工作并完成工作.

当然,魔鬼在细节中,但这种设计通常比单线程fetch-process-repeat脚本更具可伸缩性,并且通常更强大.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值