使用PHP脚本获取多个URL并更新DB

时间:2010-11-18 09:35:43

标签: php

我有一个使用MySQL的网站。我正在使用一个名为“People”的表,每一行代表一个人。当用户进入页面时,我想介绍与该人相关的新闻(以及来自MySQL表的信息)。为此,我决定使用BING News Source API。

为每个页面加载调用BING API的方法的问题是我增加了页面的加载时间(圆形提示到BING服务器)。因此,我决定预先获取所有新闻,并将其保存在我的表格中,名为“新闻报道”。

由于我的桌面包含5,000多人,因此运行PHP脚本为每个人下载所有新闻并立即更新表格会导致Fatal error: Maximum execution time(我不想禁用超时,因为它是一个好的安全措施)。

运行此类脚本的有效方法是什么?我知道我可以每5分钟运行一次cron作业,每次只更新一部分行 - 但即使在这种情况下 - 保存当前偏移量的最佳方法是什么?我应该在MySQL中保存偏移量,还是作为服务器var?

2 个答案:

答案 0 :(得分:1)

为什么不通过AJAX加载页面的新闻部分?这意味着页面的其余部分会快速加载,等待BING创建的延迟只会影响新闻部分,您可以将加载占位符分配给。

在数据库中存储新闻听起来不是非常有效/实用的解决方案,单独持续管理记录可能会在将来引起头痛。

答案 1 :(得分:1)

  • 将cronjob用于复杂的工作
  • 如果你计划以cronjob的身份运行,你应该增加超时时间(你从其他网站上提取东西,而不是公开)
  • 考虑创建一个主脚本(由cronjob触发),这个主脚本将产生多个子脚本(具有一定的控制权),这样你就可以从BING News Source中提取数据了(你可以多次下载5000个) +配置文件)无需按顺序逐个下载(想想批处理)

更新

  

Cron是类Unix计算机操作系统中基于时间的作业调度程序。 cron这个名字来自“chronos”这个词,希腊语来自“时间”。 Cron使用户能够安排作业(命令或shell脚本)在特定时间或日期定期运行。它通常用于自动化系统维护或管理,但其通用性意味着它可以用于其他目的,例如连接到Internet和下载电子邮件

Cron - on Wiki