在 php 内绕过执行时间限制

Get arount execution time limit in php

我有一些功能需要很长时间才能执行(在我的情况下下载一些外部图像),我想避免 execution time exceeded 错误。

有什么方法可以避免这种情况(例如将单个图像的下载分成单个 php 'threads' 或类似的东西)?

我无法更改 execution time limit 或任何 ini settings

我无法使用 cron works,因为它会在 WordPress 主题中使用,而且我无法控制最终用户的平台。

其中一种可能性是创建一个 PHP 脚本来下载 一个 外部图像,然后使用 Ajax 调用该脚本。然后,您可以使用 JavaScript 构建一个用户界面,它会为每个图像一张一张地调用此 PHP 脚本。它可能会显示一些进度条,具体取决于已经下载了多少图像。

是的,你可以。但是如果远程服务器不理解部分传输下载,您将不得不托管或代理要按块下载的图像。

然后你必须让你的 PHP 脚本以块的形式向服务器请求图像

请求

GET /proxy/?url=http://example2.com/myimage.jpg HTTP/1.1
Host: www.example.com
Range: bytes=200-1000

回答

HTTP/1.1 206 Partial Content
Date: Tue, 17 Feb 2015 10:50:59 GMT
Accept-ranges: bytes
Content-range: bytes 200-1000/6401
Content-type: image/jpeg
Content-length: 800

您将有多种选择来调用您的 php 脚本足够多次以获取所有块:自动刷新页面、ajax 请求、...