作者 邓超

1

... ... @@ -12,7 +12,7 @@ include_once __DIR__."/../vendor/autoload.php";
function start(){
// 删除停止运行的值
redis()->delete(RUNNING_REDIS_KEY);
redis()->delete(SYNC_RUNNING_REDIS_KEY);
// 进程管理器
$pm = new Process\Manager();
... ... @@ -284,7 +284,7 @@ switch ($argv[1]){
case 'stop':{
\Co\run(function (){
echo "正在退出程序...\n非必要请不要强制kill掉进程\n";
redis()->set(RUNNING_REDIS_KEY,'stop');
redis()->set(SYNC_RUNNING_REDIS_KEY,'stop');
while (true){
$num = exec("ps -ef | grep \"sync.php start\" | grep -v grep | wc -l");
if(!$num){
... ...
... ... @@ -16,7 +16,7 @@ include_once __DIR__."/../vendor/autoload.php";
function start(){
// 删除停止运行的值
redis()->delete(RUNNING_REDIS_KEY);
redis()->delete(SYNC_RUNNING_REDIS_KEY);
/** 创建一个表 **/
$table = new Swoole\Table(128);// 128 行
... ... @@ -40,7 +40,7 @@ function start(){
// 每2秒执行一次
\Swoole\Timer::tick(2000,function () use (&$table,&$pool){
// 是否停止脚本
$table->set('stop',['val'=> redis()->get(RUNNING_REDIS_KEY) === 'stop' ? 1 : 0]);
$table->set('stop',['val'=> redis()->get(SYNC_RUNNING_REDIS_KEY) === 'stop' ? 1 : 0]);
// _echo('定时器');
// 检查是否结束了所有的协程同步代码
if ($table->get('stop','val')) {
... ... @@ -295,7 +295,7 @@ switch ($argv[1]){
case 'stop':{
\Co\run(function (){
echo "正在退出程序...\n非必要请不要强制kill掉进程\n";
redis()->set(RUNNING_REDIS_KEY,'stop');
redis()->set(SYNC_RUNNING_REDIS_KEY,'stop');
while (true){
$num = exec("ps -ef | grep \"sync_email.php start\" | grep -v grep | wc -l");
if(!$num){
... ...
... ... @@ -9,7 +9,7 @@ define('WORKER_NUM',1);
// 开启最大1000个协程
define('COROUTINE_MAX_NUM',5000);
// 是否继续运行
define('RUNNING_REDIS_KEY','worker_is_running');
define('SYNC_RUNNING_REDIS_KEY','worker_is_running');
// 记录日志的目录
define('LOG_PATH',__DIR__.'/log');
... ...
... ... @@ -15,7 +15,7 @@ class sendJobStatusSql {
* 表
* @var string
*/
public static $table = 'lists';
public static $table = 'send_job_status';
... ...
... ... @@ -18,6 +18,16 @@ class sendJobsSql {
public static $table = 'send_jobs';
/**
* 获取需要发送的邮件
* @author:dc
* @time 2023/4/11 14:56
* @return string
*/
public static function sendList():string {
// 控制在500数量,协程数量就控制
return "select * from `".self::$table."` where `status` = 0 and `send_time` <= ".time()." limit 500";
}
... ...