我有一个PHP脚本,设置为在运行时获取30个RSS源。
它抓取第一个feed,对单个文章进行中等到大量的处理,并将它们添加到mysql数据库中。然后它继续前进到下一个Feed。每次将文章添加到数据库时,该脚本都会回显一条消息。
你可以说这个过程非常冗长,我害怕脚本超时。我宁愿不增加超时限制,而是使代码更具可扩展性。此外,当脚本运行时,直到最后我都看不到任何视觉进展。使用ob_flush()稍微解决了这个问题,但在每篇文章或每个Feed之后仍然没有输出确认。
必须有更好的方法来运行此过程。我对如何应对它几乎一无所知,所以我不能想到很多好的搜索查询来自己学习。
目前我最好的想法是将更新过程分解为30个不同的文件,包含30个Feed。然后使用AJAX(我不太熟悉)自动加载一个接一个。这会解决超时问题吗?
有更好的方法吗?
我非常感谢任何指向正确方向的帮助!
答案 0 :(得分:0)
您有很多选择可以解决此问题。
解决方案1: 假设总共有n个步骤可供遵循。由querystring参数管理逐个执行并回显元标记以在一秒左右重定向到第2步,例如。
switch($_GET["stepNo"])
case 1: performStep1(); break;
...
重定向
<META http-equiv="refresh" content="1;URL=http://example.com/?stepNo=5">
解决方案2: 正如你所说的,AJAX将是一个不错的选择,即使这样,你也可以将它分成多个步骤(甚至函数也可以工作),并在得到响应时逐个调用单个步骤。这里你的代码也就像上面一样。
答案 1 :(得分:0)
让我们假设您要完成任务,以便每次迭代运行3个RSS源。您可以将.txt文件放在与脚本相同的目录中,并在每次迭代的开始和结束时对其进行读/写。
例如,将.txt文件初始化为0.当第一次迭代完成时,将.txt更新为3,依此类推,直到完成循环,您可以将代码重置为0。 / p>
然后你可以通过cron job调用脚本。