首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将运行时间较长的PHP脚本拆分成较小的块?

如何将运行时间较长的PHP脚本拆分成较小的块?
EN

Stack Overflow用户
提问于 2008-10-12 20:39:54
回答 8查看 4.8K关注 0票数 3

我有一个初始化图片库的PHP脚本。它循环遍历所有图像,检查它们是否有缩略图,并为它们添加水印。

我的共享主机帐户只允许我在php.ini设置中设置的每个脚本有30秒的执行时间。我无法改变这一点。

我能做些什么来解决这个问题呢?目前,我每隔5张图片就刷新一次页面,这可以防止脚本超时,但浏览器会识别出脚本无法完成,并给出一个错误。这是可以的,但它并不是真正的用户友好。

有什么建议吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-10-12 20:43:38

三个想法:

  1. 您可以将其卸载到一个在服务器上运行的脚本(PHP CLI也许?)并让您当前的脚本检查进度(仍在运行!
  2. 如果javascript在你的环境中是可以的,也许你也可以调用ajax来处理这个问题。第一个解决方案允许用户继续在网站上闲逛,但不确定这对您来说是否是一个重要的考虑因素。
  3. 您可以让PHP脚本只做特定的批次(例如一次10张图片),然后使用进度报告刷新页面,然后再刷新10张图片,而不是随意基于时间的刷新。
票数 3
EN

Stack Overflow用户

发布于 2008-10-12 22:51:16

也许您应该避免批处理,并创建一个代理生成脚本,按需为每个映像执行此过程。

在代理PHP脚本中重写转换代码,该脚本检查图像是否已缩略图,如果没有,则执行需要执行的操作。然后,可以使用fpassthru()加载缩略图或带水印的文件并将其发送到客户端。

您的网页应该只引用代理脚本,如

代码语言:javascript
复制
<img src="/image.php?DSC001.JPG">

如果您的提供商支持Apache/重写,那么如果缩略图已经创建,那么您可以通过绕过代理/生成脚本来实现更大的魔力。

票数 4
EN

Stack Overflow用户

发布于 2008-10-12 20:51:05

获取一个图像列表,然后遍历它们,例如,您总共获得了500个img,一次可以获取5个img,并且在您完成它们之后,输出一个meta刷新标记,该标记将在2秒内重新加载脚本,例如,将您当前所在的图像编号作为参数。

代码语言:javascript
复制
<meta http-equiv="refresh" content="2;url=script.php?start=5">

在你的脚本中,还要检查$_GET‘’start‘是什么,并从那里继续下5个图像,然后输出start=10,等等……直到你循环遍历所有它们。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/196029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档