91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決thinkphp-queue的相關問題

發布時間:2021-02-24 10:02:49 來源:億速云 閱讀:771 作者:清風 欄目:編程語言

這篇“怎么解決thinkphp-queue的相關問題”除了程序員外大部分人都不太理解,今天小編為了讓大家更加理解“怎么解決thinkphp-queue的相關問題”,給大家總結了以下內容,具有一定借鑒價值,內容詳細步驟清晰,細節處理妥當,希望大家通過這篇文章有所收獲,下面讓我們一起來看看具體內容吧。

thinkphp是什么

thinkphp屬于一種免費的開發框架,能夠用于開發前端網頁,最早thinkphp是為了簡化開發而產生的,thinkphp同時也是遵循Apache2協議,最初是從Struts演變過來,也把國外一些好的框架模式進行利用,使用面向對象的開發結構,兼容了很多標簽庫等模式,它能夠更方便和快捷的開發和部署應用,當然不僅僅是企業級應用,任何php應用開發都可以從thinkphp的簡單、兼容和快速的特性中受益。

mysql超時斷線問題

隊列任務運行一段時間,出現:SQLSTATE[HY000]: General error: 2006 MySQL server has gone away報錯。

解決方法和分析:

配置文件database.php中配置斷線重連:

  // 是否需要斷線重連
  'break_reconnect'  =>  true,
  // 斷線標識字符串
  'break_match_str'  => ['2006'],

配置后雖然日志中會出現另一個報錯:PDO::prepare(): send of 60 bytes failed with errno=32 Broken pipe,但并不影響程序運行結果。因為斷線重連后,程序都會拋出錯誤:

...} catch (\PDOException $e) {
 if ($this->isBreak($e)) {
 return $this->close()->query($sql, $bind, $master, $pdo);
 }

 throw new PDOException($e, $this->config, $this->getLastsql());} catch (\Throwable $e) {
 if ($this->isBreak($e)) {
 return $this->close()->query($sql, $bind, $master, $pdo);
 }

 throw $e;} catch (\Exception $e) {
 if ($this->isBreak($e)) {
 return $this->close()->query($sql, $bind, $master, $pdo);
  }
 throw $e;}

如何在docker環境進行進程監護

一般情況下,可以使用supervisor監護隊列進程。配合docker使用的話,大概有幾方案:

1.將supervisor安裝到php服務所在的容器中

2.跑一個新的容器來運行隊列任務(不用supervisor,容器本身是一個daemon)

3.直接在現有的php容器運行隊列任務(命令行使用–daemon選項)

方法一supervisor參考配置(放在/etc/supervisor/conf.d, 文件命名為{file-name}.conf):

[program:my_queue_name]process_name=%(program_name)s_%(process_num)02d
command=php /path/to/think queue:work --queue=your-queue-name --sleep=3 --daemon
autostart=trueautorestart=truenumprocs=1user=root
stopasgroup=truekillasgroup=trueredirect_stderr=truestdout_logfile=/path/to/your-queue.log

方法二新開一個鏡像參考配置(在docker-compose.yml中添加服務):

php-queue:
 container_name: queue
 image: docker_php-fpm73
 restart: always
 command: php path/to/think queue:work --sleep=3
 volumes:
 - ../project:/var/www/html - ./conf/php:/usr/local/etc/php - ./conf/php/conf.d:/usr/local/etc/php/conf.d - ./conf/supervisor:/etc/supervisor/conf.d
 networks:
 - mysql - nginx

方法三有點hack,為了不大改線上環境,最后使用方法三(在host機子操作)。

啟動:docker exec -i php7 php /path/to/think queue:work --queue=my-queue-name --sleep=3 --daemon

重啟:docker exec -i php7 php /path/to/think queue:restart (重啟后發現隊列進程消失了),然后再啟動

查看隊列進程: ps -aux | grep queue

日志調整

有時候某些原因程序出錯,會有大量日志生成,最好調整下日志,單獨出來。在配置文件config/queue.php開頭添加:

use think\facade\Log;Log::init([
    'single'    => 'queue',
    'file_size' => 1024 * 1024 * 10,
    'level'     => ['error'],]);

日志將輸出到runtime目錄的queue-cli.log文件                      

感謝你的閱讀,希望你對“怎么解決thinkphp-queue的相關問題”這一關鍵問題有了一定的理解,具體使用情況還需要大家自己動手實驗使用過才能領會,快去試試吧,如果想閱讀更多相關知識點的文章,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巫山县| 讷河市| 金山区| 平凉市| 阿荣旗| 方城县| 永康市| 浦城县| 阜新市| 轮台县| 达尔| 永定县| 伊宁县| 万年县| 武邑县| 宣恩县| 雷山县| 呼玛县| 当阳市| 庆阳市| 大连市| 新昌县| 江北区| 仁怀市| 澄江县| 丹巴县| 合作市| 罗甸县| 汕尾市| 嵩明县| 青岛市| 苍山县| 偏关县| 晋中市| 香格里拉县| 邯郸县| 广西| 邹平县| 永清县| 康定县| 南昌县|