写一个队列吧 慢慢发 小米MIX2s(白)
@511,做一个异步队列 ,起一个cli任务,应该没问题的.
小米MIX2s(白)
@511,不是这样的
<?php define("COUNT", 10);//定义每次处理的大小 $list = Db::getSendList(); while(count($list)){ $current_list = []; for($i=0;i<COUNT;$i++){ array_push($current_list,array_pop($list)); } sendMail($current_list); sleep(1000);//间隔一秒 逐步测试最佳时间 } echo '发送完成';
所以不需要间隔一分钟,主要是看这个处理的并发能力,和每次处理数量等有一些关系,可以尝试间隔一秒之类的。测试一下。
@511,命令行程序模式 下执行php 理论上不存在超时的说法 除非死锁或者内存溢出等 小米MIX2s(白)
@511, 如果你想单纯的学习了解这个过程, 你首先知道:在命令行,使用诸如 php test.php 这样的命令就可以在终端运行某个脚本。 在你的 web 进程代码中, 使用 exec 命令去在终端执行你所写的脚本 php 文件。这样两者是解耦的。如果你不需要立即返回结果的话,命令行程序运行是不会影响 web 的程序时间的。
php test.php
web
exec
php
我也不是这方面的专家,我只是用过相关的工具。例如ThinkPHP支持自定义命令,这样的好处的统一管理,并且在你的命令行脚本中也能使用TP 相关的 orm 等函数。
TP
orm
写一个队列吧 慢慢发
小米MIX2s(白)
@511,做一个异步队列 ,起一个cli任务,应该没问题的.
小米MIX2s(白)
@511,不是这样的
所以不需要间隔一分钟,主要是看这个处理的并发能力,和每次处理数量等有一些关系,可以尝试间隔一秒之类的。测试一下。
小米MIX2s(白)
@511,命令行程序模式 下执行php 理论上不存在超时的说法 除非死锁或者内存溢出等
小米MIX2s(白)
@511,
如果你想单纯的学习了解这个过程,
你首先知道:在命令行,使用诸如
php test.php
这样的命令就可以在终端运行某个脚本。在你的
web
进程代码中, 使用exec
命令去在终端执行你所写的脚本php
文件。这样两者是解耦的。如果你不需要立即返回结果的话,命令行程序运行是不会影响web
的程序时间的。我也不是这方面的专家,我只是用过相关的工具。例如ThinkPHP支持自定义命令,这样的好处的统一管理,并且在你的命令行脚本中也能使用
TP
相关的orm
等函数。小米MIX2s(白)