【问题标题】:executing php cURL script for long time without changing php.ini settings长时间执行 php cURL 脚本而不更改 php.ini 设置
【发布时间】:2011-01-08 23:50:16
【问题描述】:

场景

我在博客上有一个旧博客,其中包含数千张图片和帖子,我已经使用他们的导入服务(不导入图片)将博客中的帖子导入到 wordpress 现在我想编写一个 php cURL 脚本,它将将我旧博客博客上的所有图片下载到 wordpress。

问题

我已经编写了一个脚本,它遍历所有帖子并找到博主的图像链接并递归下载链接并将它们存储在本地到 wordpress 安装但问题是如果脚本花费的时间超过max_execution_time通常设置为 30 秒。现在我不想更改 php.ini 文件中的设置。 有什么方法可以让我的脚本执行这么长时间或其他替代方法....比如批量执行或其他...

不更改 php.ini 设置的原因是我想将此脚本作为 wordpress 的开源插件发布,并且没有多少人可以访问服务器上的 php.ini 文件,而且很多人不喜欢仅仅更改设置一个可能只运行一次的脚本。

感谢您的帮助....

【问题讨论】:

    标签: php wordpress curl libcurl


    【解决方案1】:

    如果您能够在其他非零时间调用set_time_limit,您可以在每次迭代时重置时间限制,因为每次设置计时器都会重置。

    或者,最好由文档说:

    调用时,set_time_limit() 重新启动 从零开始的超时计数器。在 换句话说,如果超时是 默认 30 秒和 25 秒 进入脚本执行一个调用,如 set_time_limit(20) ,脚本 将运行总共 45 秒 在超时之前。

    只需确保为每次迭代选择足够长的时间来完成

    【讨论】:

    • 正如上面 santosh 评论的那样,大多数共享主机不允许更改 php.ini 或它们阻止/不支持 set_time_limit()...在这种情况下我该怎么办...
    【解决方案2】:

    您可以在运行时修改一些 ini 设置,因此它们只会影响脚本的当前化身。在这种情况下,有一个特殊的功能,set_time_limit()

    set_time_limit(0);
    

    这将有效地消除脚本执行的时间限制。所有其他脚本将不受影响。

    【讨论】:

    • 我可以使用 set_time_limit(0);我的脚本的一部分??
    • 是的,你可以在任何地方使用它。
    • 但大多数共享主机不允许编辑 php.ini 设置并且不支持 set_time_limit(0)。遇到这种情况,怎么解决?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    相关资源
    最近更新 更多