<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                利用workerman可以常駐進程的特性,我們可以寫一個簡單的定時任務。 ***** **## 邏輯代碼中,請不要使用`exit `、`die `、`sleep`語句** ***** ## 1、安裝workerman workerman是一個通用的socket服務器框架。怎么去理解這句話呢?你不能把workerman和thinkphp等同起來,雖然都是php框架,但做的事情不一樣。 我們可以把workerman看做一個容器,對外提供基于指定協議或者自定義協議的網絡服務。某種意義上,workerman和apache、nginx干的事情一樣。 為了區分workerman和thinkphp,我們此例子中,并未部署thinkphp。 進入自己的項目目錄,或者新建一個空目錄`TimerExample`: ``` composer require workerman/workerman ``` 然后我們的目錄就會有以下文件或目錄: ``` TimerExample目錄(或者你的項目目錄) ├─vendor │ ├─composer │ ├─workerman workerman核心代碼 │ ├─autoload.php ├─composer.json ├─composer.lock ``` ## 2、新建邏輯處理類 這些目錄或者文件,我們基本不用做任何改動,然后我們在新建`TimerExample/app/`目錄和新建一個`app/Job`的類 ``` class Job { public function curlUrl($url) { $data = []; return $data; } protected function saveData() { return true; } } ``` ## 3、新建入口文件 我們在項目跟目錄,新建一個文件`Timer.php`: ``` <?php use Workerman\Worker; use \Workerman\Lib\Timer; require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/app/Job.php'; // 創建一個Worker監聽2345端口,使用http協議通訊 $task = new Worker("http://0.0.0.0:2345"); //進程數,如果沒有$task->id === 0則會執行兩次 $task->count = 2; $task->onWorkerStart = function($task) { //第一個任務進程 if($task->id === 0) { Timer::add(5, function(){//每5秒執行一次 $job = new \app\Job(); $job->curlUrl('http://www.baidu.com'); }); } }; // 運行worker Worker::runAll(); ``` ## 4、命令行啟動服務 以debug(調試)方式啟動 `php Timer.php start` 以daemon(守護進程)方式啟動 `php Timer.php start -d` 這樣我們就完成了一個簡單的定時任務。 ## 5、擴展:多個不同任務 `Timer.php`代碼,第一個任務進程每5秒執行一次,第二個進程每10秒執行一次,進程之間相互獨立,非阻塞模式。 ``` <?php use Workerman\Worker; use \Workerman\Lib\Timer; require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/app/Job.php'; require_once __DIR__ . '/app/Job2.php'; // 創建一個Worker監聽2345端口,使用http協議通訊 $task = new Worker("http://0.0.0.0:2345"); //進程數,如果沒有$task->id === 0則會執行兩次 $task->count = 2; $task->onWorkerStart = function($task) { //第一個任務進程,每5秒執行一次 if($task->id === 0) { Timer::add(5, function(){ $job = new \app\Job(); $job->curlUrl('http://www.baidu.com'); }); } //第二個任務進程,每十秒執行一次 if($task->id === 1) { Timer::add(10, function(){ $job2 = new \app\Job2(); $job2->curlUrl('http://www.baidu.com'); }); } }; // 運行worker Worker::runAll(); ``` ## 6、擴展:數據庫操作 workerman官方文檔:[Workerman/MySQL](http://doc.workerman.net/components/workerman-mysql.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看