长时间运行任务的 PHP Cron Job 替代方案
我们有一个网站,实时列出博客的链接。问题是,这些页面加载得很慢,因为它们需要从不同的源网站读取数据。
我写了一个PHP脚本,每小时生成一次每个页面的HTML版本。问题是,这个PHP脚本在完成所有页面之前就超时了。我知道可以增加PHP脚本允许的执行时间,但我觉得这不是解决问题的最有效方法。
有没有其他方法可以做到这一点?我不知道该从哪里开始找——是PERL?JAVA?Python?这些脚本是如何在服务器上运行的?我应该向我的网络主机询问什么?
3 个回答
1
考虑到你最初的问题是网络延迟(“页面加载很慢”),我认为没有理由相信PHP是这里的瓶颈。我怀疑换一种编程语言会对你的脚本运行时间有影响。
2
用Python的urllib2库应该能很好地完成这个任务。另外,我理解得对吗:你有一个网站,它从其他网站收集数据,所有内容都是静态的HTML页面?这听起来像是你把HTML当成数据库在用,所以或许可以考虑用一个真正的数据库。
0
另一种解决方案是使用数据库,而不是一次性做太多工作。你可以创建一个表格,列出你要获取的网站,并记录下它们上次被获取的时间。然后,让定时任务(cron)每次提取1到2个很久没有被获取的网站。这样定时任务运行得频繁一些,你就总能得到最新的数据,而且脚本的工作量也会减轻,因为它不会一次性处理太多内容。这个方法很容易扩展。