作者 邓超

1

1 <?php 1 <?php
2 2
  3 +use Model\listsSql;
  4 +
3 include_once __DIR__."/../vendor/autoload.php"; 5 include_once __DIR__."/../vendor/autoload.php";
4 6
5 7
6 //$ids = db()->all('select `id` from `'.\Model\emailSql::$table.'` limit 1000 offset 0'); 8 //$ids = db()->all('select `id` from `'.\Model\emailSql::$table.'` limit 1000 offset 0');
7 //print_r($ids); 9 //print_r($ids);
8 10
9 - 11 +//print_r(db()->value(listsSql::lastMsgno(1,89)));
10 12
11 start_now_mail(); 13 start_now_mail();
@@ -99,12 +99,7 @@ class DbPool { @@ -99,12 +99,7 @@ class DbPool {
99 99
100 $sql = "update `{$table}` set ".dbUpdate($data). " where ".$where; 100 $sql = "update `{$table}` set ".dbUpdate($data). " where ".$where;
101 101
102 - // 如果存储的值是数组,就json一次  
103 - foreach ($data as $k=>$datum){  
104 - if(is_array($datum)){  
105 - $data[$k] = json_encode($datum,JSON_UNESCAPED_UNICODE);  
106 - }  
107 - } 102 + $data = $this->getData($data);
108 103
109 $query = $this->query([$sql,$data]); 104 $query = $this->query([$sql,$data]);
110 if($query){ 105 if($query){
@@ -115,6 +110,26 @@ class DbPool { @@ -115,6 +110,26 @@ class DbPool {
115 110
116 111
117 /** 112 /**
  113 + * 在更新/插入时处理数据
  114 + * @param $data
  115 + * @return mixed
  116 + * @author:dc
  117 + * @time 2023/2/18 14:50
  118 + */
  119 + private function getData($data){
  120 + // 如果存储的值是数组,就json一次
  121 + foreach ($data as $k=>$datum){
  122 + if(is_array($datum)){
  123 + $data[$k] = json_encode($datum,JSON_UNESCAPED_UNICODE);
  124 + }elseif ($datum === null){
  125 + $data[$k] = '';
  126 + }
  127 + }
  128 + return $data;
  129 + }
  130 +
  131 +
  132 + /**
118 * 插入数据 133 * 插入数据
119 * @param string $table 134 * @param string $table
120 * @param array $data 135 * @param array $data
@@ -131,12 +146,7 @@ class DbPool { @@ -131,12 +146,7 @@ class DbPool {
131 146
132 $sql = "insert into `{$table}` set ".dbUpdate($data); 147 $sql = "insert into `{$table}` set ".dbUpdate($data);
133 148
134 - // 如果存储的值是数组,就json一次  
135 - foreach ($data as $k=>$datum){  
136 - if(is_array($datum)){  
137 - $data[$k] = json_encode($datum,JSON_UNESCAPED_UNICODE);  
138 - }  
139 - } 149 + $data = $this->getData($data);
140 150
141 $query = $this->query([$sql,$data]); 151 $query = $this->query([$sql,$data]);
142 152
@@ -221,11 +221,10 @@ class Mail { @@ -221,11 +221,10 @@ class Mail {
221 false 221 false
222 ); 222 );
223 // 结束操作了 223 // 结束操作了
224 - }  
225 -  
226 224
227 - // 再次调用  
228 - $this->syncMail($email_id,$folder_id,$folder,$db); 225 + // 再次调用
  226 + $this->syncMail($email_id,$folder_id,$folder,$db);
  227 + }
229 228
230 return true; 229 return true;
231 230
@@ -21,7 +21,7 @@ class folderSql { @@ -21,7 +21,7 @@ class folderSql {
21 * @time 2023/2/18 9:22 21 * @time 2023/2/18 9:22
22 */ 22 */
23 public static function all(int $email_id):string { 23 public static function all(int $email_id):string {
24 - return "select `folder`,`pid`,`origin_folder`,`last_sync_time`,`folder` from `".static::$table."` where `email_id` = {$email_id} order by `id` asc"; 24 + return "select `id`,`folder`,`pid`,`origin_folder`,`last_sync_time`,`folder` from `".static::$table."` where `email_id` = {$email_id} order by `id` asc";
25 } 25 }
26 26
27 27
@@ -18,5 +18,9 @@ @@ -18,5 +18,9 @@
18 18
19 3.注意:如果使用 进程守护器(supervisord) 执行退出后会被 守护器重新运行 19 3.注意:如果使用 进程守护器(supervisord) 执行退出后会被 守护器重新运行
20 20
  21 +4.非必要的情况下请执行上面命令进行退出,
  22 +如果一直没有退出则说明脚本还有任务没有处理完成。
  23 +非必要情况请等待,不要直接kill掉进程,
  24 +避免出现数据上的错误。
21 25
22 26