在 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 请求、...
我有一些功能需要很长时间才能执行(在我的情况下下载一些外部图像),我想避免 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 请求、...