我有一个PHP脚本,当我运行它时设置为获取30个RSS提要。
它抓取第一个提要,对单个文章进行中等到大量的处理,并将它们添加到mysql数据库中。然后它转向下一个饲料。每次向数据库中添加一篇文章时,脚本都会回显一条消息。
正如你所知道的,这个过程很长,我担心脚本超时。我宁愿不增加超时限制,而是使代码更具可伸缩性。另外,当脚本运行时,我没有看到任何视觉进展,直到最后。这在一定程度上修复了ob_flush(),但它仍然没有在每篇文章或每个提要之后输出确认。
一定有更好的方法来运行这个过程。我不知道该怎么做,所以我想不出很多好的搜索查询来学习这个。
目前我最好的想法是将更新过程分解为30个不同的文件,用于30个提要。然后使用AJAX(我不太熟悉)自动加载一个接一个。这会解决超时问题吗?
有没有更好的办法?
我将非常感谢任何和所有的帮助指出正确的方向!
假设您希望将任务分解,以便每个迭代运行3个RSS提要。您可以在与脚本相同的目录中放置一个.txt文件,并在每次迭代的开始和结束时对其进行读写。
例如,初始化.txt文件为0。当第一次迭代完成时,将.txt更新为3,以此类推,直到完成循环,此时可以让代码将文件重置为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是一个不错的选择,即使这样,您也可以将其分解为多个步骤(甚至函数也可以工作),并在获得响应时逐个调用各个步骤过程。这里你的代码也会像上面一样