cakephp2 框架下的 持久处理 不丢失数据库连接 后台挂起执行。
生活随笔
收集整理的這篇文章主要介紹了
cakephp2 框架下的 持久处理 不丢失数据库连接 后台挂起执行。
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言 :?利用cakephp2?自帶的數(shù)據(jù)庫連接方式的話,持久處理中會丟失數(shù)據(jù)庫連接,以下是解決方案之一。這里順便把怎么在Linxu上后臺掛起執(zhí)行也寫了下。
1 :?批處理觸發(fā)器
2 :?批處理實體
3 :?執(zhí)行方法 {
? 3.1 :?正常執(zhí)行,
? 3.2 :?后臺掛起,
??3.3 : 后臺掛起,并且禁止輸出nohup.out文件,
}
4 :?殺死掛起的后臺進(jìn)程 {
? 4.1?查看進(jìn)程,
? 4.2?殺死進(jìn)程
}
?
1, 批處理觸發(fā)器
1 // 引入你要用的控制器, 這里是SomeController 2 App::uses('SomeController', 'Controller'); 3 4 /** 5 * Class SomeShell 6 * @property SomeController SomeController 7 */ 8 class SomeShell extends AppShell { 9 10 // 初始化處理 11 function startup(){ 12 parent::startup(); 13 $this->SomeController = new SomeController(); 14 } 15 16 public function infiniteBatch() { 17 18 // 執(zhí)行對應(yīng)的Action 19 $this->SomeController->infiniteBatch(); 20 } 21 22 }?
2, 批處理實體控制器
1 // app/Controller/SomeController.php 2 public function infiniteBatch() { 3 4 // 發(fā)送方向 企業(yè)到個人 5 define("DIRECTION_EMPLOYER_TO_APPLICANT", 1); 6 // 發(fā)送方向 個人到企業(yè) 7 define("DIRECTION_APPLICANT_TO_EMPLOYER", 0); 8 // 新消息flag 有新消息 9 define("HAVE_NEW_MESSAGE_YES", 1); 10 // 新消息flag 沒有新消息 11 define("HAVE_NEW_MESSAGE_NO", 0); 12 13 // 再循環(huán)的外面拿到數(shù)據(jù)庫配置 14 $this->模型 = ClassRegistry::init("SessionMessage"); 15 $DbConfig = $this->模型->getDataSource()->config; 16 17 // 執(zhí)行一個無限循環(huán) 18 while (true) { 19 $this->log("開始", 'rcvMail'); 20 // 初始化模型 21 $smModel = ClassRegistry::init("模型"); 22 // 連接數(shù)據(jù)庫 default 是數(shù)據(jù)庫配置名 查看 database.php 23 ConnectionManager::create('default', $DbConfig); 24 // 把數(shù)據(jù)庫連接交給模型 25 $smModel->setSource('表名'); 26 // 連接 27 $smModel->getDataSource()->connect(); 28 29 30 // 執(zhí)行數(shù)據(jù)庫操作 31 $result = $this->模型->find('first'); 32 33 // 獲取數(shù)據(jù)庫配置 34 $dbConfigName = $smModel->useDbConfig; 35 36 // 斷開連接 37 $smModel->getDataSource()->disconnect(); 38 39 // 刪除數(shù)據(jù)庫配置 40 ConnectionManager::drop($dbConfigName); 41 42 // 每次循環(huán)玩休息一定時間 43 sleep(10); 44 } 45 }?
3,?執(zhí)行批處理 (Linux?環(huán)境下)
# 假設(shè)項目在 /var/www/html目錄下# 3.1 普通執(zhí)行 /var/www/html/app/Console/cake.php Some infiniteBatch # 3.2 掛起執(zhí)行 nohup /var/www/html/app/Console/cake.php Some infiniteBatch& # 3.3 掛起執(zhí)行,并且禁止輸出nohup.out文件 nohup /var/www/html/app/Console/cake.php Some infiniteBatch >/dev/null 2>&1 &
?
4,?查看和殺死cakephp掛起的進(jìn)程
4.1?查看進(jìn)程
ps -aux|grep cake.php|grep -v grep得到這樣的東西
www 29475 0.8 0.3 264024 29660 ? S 6月14 99:35 /usr/bin/php -q /var/www/html1/app/Console/cake.php Some infiniteBatch4.2?殺死進(jìn)程
kill 29475?
謝謝閱覽,如有不明點可留言 : )
轉(zhuǎn)載于:https://www.cnblogs.com/dooun/p/9213676.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的cakephp2 框架下的 持久处理 不丢失数据库连接 后台挂起执行。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 4555 [Tjoi2016H
- 下一篇: p2657 windy数