...
|
...
|
@@ -41,7 +41,7 @@ class HotMail { |
|
|
private function start(){
|
|
|
_echo('启动预热邮件处理 '.getmypid());
|
|
|
|
|
|
if(redis()->add('hot_mail_sync',1,60)){
|
|
|
if(redis()->add('hot_mail_sync',1,30)){
|
|
|
$fob = $this->getFobHotEmail();
|
|
|
|
|
|
// 把黑格自己的也算进去
|
...
|
...
|
@@ -63,67 +63,11 @@ class HotMail { |
|
|
}catch (Throwable $e){}
|
|
|
}
|
|
|
|
|
|
$maxId = $this->db->value("select `id` from `lists` order by `id` desc limit 1");
|
|
|
$id = 0;
|
|
|
while (1){
|
|
|
$ids = [];
|
|
|
for ($i=0;$i<1000;$i++){
|
|
|
$ids[] = $i+$id;
|
|
|
}
|
|
|
$id = end($ids);
|
|
|
|
|
|
redis()->rPush('hot_check_ids',implode(',',$ids));
|
|
|
|
|
|
if($id>$maxId){
|
|
|
break;
|
|
|
echo date('d H:i:s').' ==》 已执行完成'.PHP_EOL;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
while (1){
|
|
|
$ids = redis()->lPop('hot_check_ids');
|
|
|
if($ids){
|
|
|
$ids = explode(',',$ids);
|
|
|
$this->run($ids);
|
|
|
}else{
|
|
|
echo '等待'.PHP_EOL;
|
|
|
co::sleep(2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo '已执行完成'.PHP_EOL;
|
|
|
}
|
|
|
|
|
|
|
|
|
private $folder = [];
|
|
|
|
|
|
private function run($id){
|
|
|
$list = $this->db->all(\Model\listsSql::all(dbWhere(['id'=>$id,'is_hots'=>0]),'`id`,`from`,`to`,`folder_id`'));
|
|
|
foreach ($list as $item){
|
|
|
if(empty($this->folder[$item['folder_id']])){
|
|
|
$this->folder[$item['folder_id']] = folderAlias($this->db->value(\Model\folderSql::first($item['folder_id'],'folder')));
|
|
|
}
|
|
|
|
|
|
// 是否是发件箱
|
|
|
if($this->folder[$item['folder_id']] == '发件箱'){
|
|
|
$w = ['email' => explode(',',$item['to'])];
|
|
|
}else{
|
|
|
$w = ['email' =>$item['from']];
|
|
|
}
|
|
|
// 是否在 预热邮箱中
|
|
|
if($this->db->cache(300)->count('select count(*) from `hot_mail` where '.dbWhere($w))){
|
|
|
|
|
|
$ret = $this->db->update(listsSql::$table,['is_hots'=>1],dbWhere(['id'=>$item['id']]));
|
|
|
echo date('d H:i:s').' ==》 '.$item['id'].':'.$ret."\n";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取预热邮箱
|
...
|
...
|
@@ -134,7 +78,7 @@ class HotMail { |
|
|
*/
|
|
|
private function getHotEmail($t='e'):array {
|
|
|
$url['e'] = 'https://oa.shopk.com/api/mail/preheat';
|
|
|
$url['w'] = 'https://oa.shopk.com/api/mail/write?iswrite=1';
|
|
|
$url['w'] = 'https://oa.shopk.com/api/mail/write?iswrite=1&id=11321';
|
|
|
$data = @file_get_contents($url[$t]);
|
|
|
|
|
|
if($data){
|
...
|
...
|
@@ -174,15 +118,18 @@ swoole_set_process_name('hot-email-run-man'); |
|
|
|
|
|
$pm = new Swoole\Process\Manager();
|
|
|
|
|
|
$pm->addBatch(10,function (){
|
|
|
$pm->addBatch(1,function (){
|
|
|
|
|
|
swoole_set_process_name('hot-email-run');
|
|
|
|
|
|
include_once "../vendor/autoload.php";
|
|
|
|
|
|
while(1){
|
|
|
new HotMail();
|
|
|
// 执行完了暂停5分钟在执行
|
|
|
sleep(120);
|
|
|
sleep(40);
|
|
|
}
|
|
|
|
|
|
},true);
|
|
|
|
|
|
$pm->start();
|
...
|
...
|
|