Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 最大执行时间备选方案_Php_For Loop_Timeout_Execution Time_Php Ini - Fatal编程技术网

Php 最大执行时间备选方案

Php 最大执行时间备选方案,php,for-loop,timeout,execution-time,php-ini,Php,For Loop,Timeout,Execution Time,Php Ini,下面是真相: 我为之开发的客户端位于HostGator上,它将其最大执行时间限制为30秒,无法覆盖(我已尝试并确认无法通过他们的支持和wiki实现) 我让代码做的是获取一个上传的文件并… 循环遍历xml 获取文件中的所有提要下载链接 下载每个xml文件 分别循环遍历每个文件的每个xml数组,并根据每个项目的来源(即文件名)将其信息插入数据库 现在有没有什么方法可以让我以某种方式将其排队,或者可能将工作负载拆分为多个文件?我知道代码工作得很完美,在插入前会检查每一项是否存在,但我一直无法绕过执行限

下面是真相:

我为之开发的客户端位于HostGator上,它将其最大执行时间限制为30秒,无法覆盖(我已尝试并确认无法通过他们的支持和wiki实现)

我让代码做的是获取一个上传的文件并…

  • 循环遍历xml
  • 获取文件中的所有提要下载链接
  • 下载每个xml文件
  • 分别循环遍历每个文件的每个xml数组,并根据每个项目的来源(即文件名)将其信息插入数据库
  • 现在有没有什么方法可以让我以某种方式将其排队,或者可能将工作负载拆分为多个文件?我知道代码工作得很完美,在插入前会检查每一项是否存在,但我一直无法绕过执行限制


    如果您有任何建议,请告诉我

    您知道可以通过注册关机处理程序来欺骗
    最大执行时间吗?在该代码中,您可以再运行30秒;-)

    好的,现在来点更有用的

    您可以在数据库中添加一个小队列表,以跟踪您所在的位置,以防脚本中途终止

    • 获得所有下载链接后,将它们添加到表中
    • 然后下载一个文件并进行处理;完成后,将它们从队列中签出(从中删除)
    • 每次运行时,您都要检查队列中是否还有剩余的工作

    为了让它工作,您需要多次请求该URL;也许可以使用JavaScript继续重新加载,直到工作完成?

    您知道可以通过注册关机处理程序来欺骗
    最大执行时间吗?在该代码中,您可以再运行30秒;-)

    好的,现在来点更有用的

    您可以在数据库中添加一个小队列表,以跟踪您所在的位置,以防脚本中途终止

    • 获得所有下载链接后,将它们添加到表中
    • 然后下载一个文件并进行处理;完成后,将它们从队列中签出(从中删除)
    • 每次运行时,您都要检查队列中是否还有剩余的工作

    为了让它工作,您需要多次请求该URL;也许可以使用JavaScript继续重新加载,直到工作完成?

    只有在通过Web服务器执行PHP脚本时,时间限制才有效,如果您从CLI或作为后台进程执行脚本,它应该可以正常工作

    请注意,如果您不够小心,执行外部脚本有点危险,但这是一个有效的选项

    检查以下资源:

    具体来说:


    只有在通过Web服务器执行PHP脚本时,时间限制才有效,如果您从CLI或作为后台进程执行脚本,它应该可以正常工作

    请注意,如果您不够小心,执行外部脚本有点危险,但这是一个有效的选项

    检查以下资源:

    具体来说:


    我正处于这种情况。我的方法与杰克的相似

    • 接受执行时间限制就在那里
    • 设计应用程序以应对突然退出(查看
      寄存器\关闭\功能
    • 确定流程中所有需要时间的部分
    • 持续保存流程的进度
    • 修改组件,使其能够从任意点开始,例如XML文件中的某个位置,或继续下载要获取的XML链接列表
    对于任务我做了两个模块,导入用于实际处理;用于处理这些任务的任务管理。
    对于调用TaskManager,我使用CRON,现在这取决于webhosting提供了什么,如果足够的话。还有一个网络摄像机

    Jack的JavaScript方法的优点是,它只在需要时添加请求。如果没有要执行的任务,脚本运行时将非常短,可能被夸大了*,但仍然是。缺点是它需要用户一直等待,而不是关闭选项卡/浏览器、JS支持等。 *)在这种情况下,可能比一个用户点击一次要求要低得多


    然后当然要研究性能改进、缓存、跳过不需要/没有改变的内容等。

    我正处于这种情况。我的方法与杰克的相似

    • 接受执行时间限制就在那里
    • 设计应用程序以应对突然退出(查看
      寄存器\关闭\功能
    • 确定流程中所有需要时间的部分
    • 持续保存流程的进度
    • 修改组件,使其能够从任意点开始,例如XML文件中的某个位置,或继续下载要获取的XML链接列表
    对于任务我做了两个模块,导入用于实际处理;用于处理这些任务的任务管理。
    对于调用TaskManager,我使用CRON,现在这取决于webhosting提供了什么,如果足够的话。还有一个网络摄像机

    Jack的JavaScript方法的优点是,它只在需要时添加请求。如果没有要执行的任务,脚本运行时将非常短,可能被夸大了*,但仍然是。缺点是它需要用户一直等待,而不是关闭选项卡/浏览器、JS支持等。 *)在这种情况下,可能比一个用户点击一次要求要低得多


    然后当然要研究性能改进、缓存、跳过不需要/未更改的内容等。

    不幸的是,主机禁用了上述所有功能=\不幸的是,主机已禁用上述所有功能=\尽管如此,处理每个父提要的大量xml文件并对其进行处理仍需要30秒以上的时间