并行执行而不是foreach

时间:2016-12-03 11:18:35

标签: php multithreading performance foreach php-7

我目前使用foreach循环顺序上传文件。每个上传都是一个接一个地处理。

<?php
foreach ($files_array as $file) {
//each image is processed here and upload one after the other
}
?> 

然而,处理多个图像而不是一次处理一个图像会更有效率,因为用户将等待更少。如何在PHP中一次处理多个文件,而不是按顺序处理多个文件

2 个答案:

答案 0 :(得分:3)

选项1 - 分叉您的流程:

您需要分叉您的流程,并在几个线程中实现这一点。这是我的例子:

<?php
class DatabaseAPI {
    private $mongoClient;

    function __construct() {
        try {
            $this->mongoClient = new MongoDB\Client("mongodb://localhost:27017");
        }
        catch(Exception $e) {
            echo $e;
        }
    }
}
?>

选项2 - 使用工作队列:

您也可以使用队列(例如RabbitMQ或其他)。
在您的脚本中,您可以将您的作业放入队列并回复客户端,该作业已添加到队列中并将很快处理。 Here你可以找到如何使用RabbitMQ完成它的详细示例。

答案 1 :(得分:-1)

您想一次上传多张图片吗?

如果是,请使用“爆炸”方法上传多张图片。