【问题标题】:PHP faster image creation from base64PHP 从 base64 更快地创建图像
【发布时间】:2017-07-25 19:10:15
【问题描述】:

我正在开发一个生成 html 内容并将其转换为画布然后使用 PHP 将其保存到服务器的项目,此过程需要超过 15 秒才能完成,这对于访问者来说是一个巨大的等待时间, 无论如何可以更快地从base64文件创建图像?那么服务器配置呢,我可以升级什么来让我的服务器上传得更快?谢谢。

这是生成图像的功能代码,问题是用户需要等待画布创建,然后等待将图像发送到服务器的 ajax 请求,大约需要 17 秒。

    function base64ToImage($base64_string, $output_file) 
{
      $file = fopen($output_file, "wb");

      $data = explode(',', $base64_string);

      fwrite($file, base64_decode($data[1]));
      fclose($file);

     return $output_file;
}  

【问题讨论】:

  • 请向我们展示代码,以便我们了解您在做什么以及如何加快速度。如果没有完整的问题,我们无法提供帮助。
  • @PatrickSimard 添加了代码,谢谢。

标签: php optimization base64


【解决方案1】:

当操作太长而无法立即执行时,您可以使用 cron 作业在服务器负载较少时将其推迟。同时,您可以将字符串保存到数据库(应该很快),然后将其输出到 img 标签中

<img src="data:image/png;base64, HwAAAABJRU5ErkJggg==" alt="Red dot" />

如果这不是更快,那么问题不是保存图像而是从源获取图像。

【讨论】:

  • 那将是一个好主意,但我无法应用它,因为我需要为用户生成一个 facebook 共享 url,其中包括服务器中图像的路径和使用检索到的 id上传完成后同样的ajax请求。
  • 如果您在不同的php页面中流式传输base64并将其用作图像的来源,您仍然可以执行此操作。图像流可以来自base64代码或直接来自图像,具体取决于它是否是否已转换。两者的网址相同。类似 /imgstream.php?imgToken=1d485e4w
  • 这件事,分享是通过一个包含从 ajax 请求中检索到的 id 的链接完成的,除此之外,当用户单击分享按钮时,他们需要查看上传的图像,在这种情况下它会是空白的,因为图像尚未上传,它只是一个预期的链接,因此大多数人不会分享他们的结果,除非他们看到他们要分享的图像......
  • 那么,在这种情况下,您应该放置一个带有“请稍候”消息的加载图标。您可以在操作发生时查看服务器负载,看看是否有异常峰值。如果你这样做,那么你可能需要更多的处理能力。另外,看看你的内存使用情况。
  • 我已经放了一条处理程序消息...我需要知道的是服务器配置可以使这个图像创建过程更快。
猜你喜欢
  • 1970-01-01
  • 2014-06-09
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2015-04-30
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多