讨论数量:
队列可以解决
不知道你的具体业务是什么,我就举个例子吧
比如导出 100w 数据, 直接用队列导出,完成后给发个消息,或固定位置可以看到导出成功,之后在下载文件。
没办法的,只能在linux环境下使用laravel队列,因为laravel队列用到一个php扩展,只有在Linux环境下能使用,但是有一个取巧的办法,就是windows的wsl,或者win10后续版本的hyper-v虚拟机,启动一个linux子系统来跑laravel,至于Windows server应该是要使用高版本的才会带有这些功能,我目前本地环境就是使用hyperv,一切都正常,其中文件同步又会是个大坑,至于生产环境没有试过,一般php都跑在linux环境下,所以这个问题解决方案几乎没有
一个简单的例子,模拟伪多线程:
use GuzzleHttp\Client;
public function thread()
{
$http = new Client;
$host= "https://your-project/?";
$query = http_build_query([
'token' => 'xxxxxxxx'
]);
$query2 = http_build_query([
'param' => 'xxxxxxxx'
]);
$query3 = http_build_query([
'param' => 'xxxxxxxx',
'param' => 'xxxxxxxx'
]);
$res1 = json_decode(($http->get($host . $query))->getBody(), true);
$res2 = json_decode(($http->get($host . $query2))->getBody(), true);
$res3 = json_decode(($http->get($host . $query3))->getBody(), true);
dd($res1 . $res2 . $res3);
}
你可以把 3次 请求独立为一个或多个 api 接口,通过接口参数进行数学运算,使用 token 进行验证,就可以达到伪多线程,足够满足你的需求了。
推荐文章: