如何使用PHP的system()函数通过另一台服务器使用ImageMagick?

时间:2015-08-05 15:51:56

标签: php ssh imagemagick server

我们对图像进行了大量处理,很多时候这个处理会杀死我们所有的CPU并导致我们的网站崩溃。我们想要做的是将图像处理放在另一台服务器上,这样我们就可以将该服务器扩展为nessicary并且不会让我们当前的服务器崩溃。

我想知道如何解决这个问题。我们目前的流程是:

1)用户向我们的图像处理脚本发出AJAX请求。

2)我们根据用户的输入构造一个字符串。该字符串包含执行ImageMagick过程的命令。

3)我们通过PHP的system()命令运行字符串。

4)然后我们将页眉发送到页面并在文件上使用PHP的imagecreatefrompng()函数将图像输出给用户。

所以我想知道,现在转移ImageMagick过程的最佳方法是什么。我想通过SSH远程连接到其他服务器,但我确信通过SSH可以建立的连接数量有限制。我们一次有100个在线用户,因此我们需要能够一次完成这么多连接。

任何有关如何最好地将我们的图像处理转移到另一台服务器的想法都会受到欢迎。

谢谢!

1 个答案:

答案 0 :(得分:1)

SSH不是将工作请求分发到另一台服务器的合适协议。一个流行的趋势是利用messaging queue将任务分派给" worker "节点。实现可以非常依赖于设计,需求和资源限制。这是一个快速的骨架轮廓......

Example messaging queue

  1. Web服务器接收新图像项。
    • 将图像写入CDN或网络安装&等
    • 将任务发布到消息队列,例如RabbitMQ
  2. 工作节点侦听新任务。
  3. 消费并执行请求。
    • 将结果输出写在CDN上的源旁边
    • 通过更新DB中的记录或发布回MQ来通知任务完成。
  4. 结帐RabbitMQ / PHP" Hello World"和" Work Queues"文章详细说明。