【问题标题】:many images on one page some not loading一页上有很多图像有些没有加载
【发布时间】:2012-03-09 22:58:59
【问题描述】:

我正在做一个仓库管理系统。

订单在早上以 CSV 格式出现,然后我的脚本将执行。

它会在每个订单的顶部放置一个 php 制作的条形码。我正在使用的示例 CSV 有大约 100 个独特的订单,所以当我加载将打印订单的页面时,服务器收到 100 多个请求并且(我猜)一些图像超时。

当我查看源代码并打开指向不起作用的链接时,它会加载图像,导致我认为我需要以某种方式禁用浏览器上的 timout 方法。

我唯一的另一个想法是通过 javascript 加载条形码。

有什么建议吗?

【问题讨论】:

  • 所以您正在加载一个脚本来生成所有这些订单页面,每个页面都有自己的条形码?当图像开始失败时,它们是继续失败还是偶然发生?
  • php.ini 中的 max_execution_time 是多少?
  • 先在浏览器中预加载图像,而不是显示带有图像的页面?谷歌图片预加载器 javascript。
  • 在脚本上设置 ini_set("max_execution_time", "3000") 以制作条形码,但仍然无法加载,我尝试预加载图像
  • 通过添加睡眠函数来修复此问题 function sleep_until(seconds) { var max_sec = new Date().getTime(); while (new Date()

标签: php javascript image browser


【解决方案1】:

我认为 enygma 可能遇到的问题是 php 脚本的处理时间有限。有时它们会在 30 秒后被切断。一次生成所有这些图像可能会超时,导致您的脚本在服务器上被终止并停止发送数据。您最好在 javascript 中加载它们的想法可能是您最好的选择,只要您一次只执行几个或连续执行它们。

【讨论】:

    【解决方案2】:

    如果你在 php 中启动一个 session,这个 session 会被锁定,并且在释放之前不能被另一个 php 脚本访问。

    根据您使用 php 生成图像 - 这很可能是您看到的原因。

    other questions 更详细地介绍了 php 和会话的工作原理;但很可能这是您的某些图像未收到的直接原因 - 请求在一个单独的串行队列中依次处理,因为每个脚本都会读取会话并且在完成之前不会释放它。队列末尾的请求以某种方式达到了时间限制,并且什么也不返回。

    因此,请确保您调用:

    session_write_close();
    

    尽快在所有需要访问会话的脚本中防止它们阻塞所有其他 php 请求,或者最好还是不要使用会话(例如,如果您只是使用会话进行授权在 url 中包含一个哈希值,并与图像请求的哈希值进行比较)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多