1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      什么是swoft2進(jìn)程

      本篇內(nèi)容主要講解“什么是swoft2進(jìn)程”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“什么是swoft2進(jìn)程”吧!

      為章貢等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及章貢網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、章貢網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

      基本功能介紹

      1. swoft2 自定義用戶(hù)進(jìn)程來(lái)定期執(zhí)行用戶(hù)自定義任務(wù)

      2. swoft2 支持進(jìn)程池解決多進(jìn)程并發(fā)執(zhí)行用戶(hù)自定義任務(wù)

      進(jìn)程和線程的介紹   https://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

      多進(jìn)程程序設(shè)計(jì)能解決很多有意義的問(wèn)題,程序的主進(jìn)程運(yùn)行核心任務(wù),一些輔助進(jìn)程解決一些例如消息隊(duì)列的處理,后臺(tái)定期執(zhí)行的任務(wù)處理,文件監(jiān)控,定期日志上報(bào)等相關(guān)功能.每個(gè)進(jìn)程都有獨(dú)立的上下文,進(jìn)程之間互不干擾.

      功能的相關(guān)配置選項(xiàng)

      1. 用戶(hù)進(jìn)程的配置一般需要在 bean.php 里注冊(cè),系統(tǒng)會(huì)自動(dòng)加載用戶(hù)配置的自定義進(jìn)程

      2. 進(jìn)程池的配置也需要在 bean.php 配置進(jìn)程池配置項(xiàng),但進(jìn)程池不會(huì)自動(dòng)加載,需要手動(dòng)執(zhí)行命令來(lái)啟動(dòng)用戶(hù)進(jìn)程

      用戶(hù)進(jìn)程配置簡(jiǎn)單示例

      修改 bean.php
       'httpServer' => [
       'class' => HttpServer::class,
       'port' => 18306,
       'listener' => [
       'rpc' => bean('rpcServer')
       ],
       'process' => [
       'crontab' => bean(CrontabProcess::class)
       'log' => bean(\App\Process\LogProcess::class)
       ],
       ],

      上面的配置是 WEB服務(wù)器 的應(yīng)用配置 如果是 WebSocket服務(wù)器 寫(xiě)在wsServer配置項(xiàng)里,定義 process 屬性就好.

      注意process的值是一維數(shù)組,其中key你可以自己定義,只要合法且不重復(fù)即可,值則為你定義的進(jìn)程類(lèi),請(qǐng)用工廠函數(shù) bean 加載.

      進(jìn)程池的配置簡(jiǎn)單示例

      修改 bean.php
      'processPool' => [
       'class' => \Swoft\Process\ProcessPool::class,
       'workerNum' => 12
      ]

      上面的配置定了進(jìn)程池,且分配了12個(gè)可用工作進(jìn)程,實(shí)際生產(chǎn)中根據(jù)你的項(xiàng)目需求自行修改配置項(xiàng).

      進(jìn)程 workerid 的初始值是0,所以這里的 workerid 有效訪問(wèn)是0-11,請(qǐng)注意

      簡(jiǎn)單的示例

      用戶(hù)進(jìn)程代碼預(yù)覽

      namespace App\Process;
      use Swoft\Bean\Annotation\Mapping\Bean;
      use Swoft\Log\Helper\CLog;
      use Swoole\Coroutine;
      use Throwable;
      use Swoft\Process\Process;
      use Swoft\Process\UserProcess;
      
      /**
       * Class LogProcess
       *
       * @since 2.0
       *
       * @Bean()
       */
      class LogProcess extends UserProcess
      {
      
       /**
           * @param Process $process
           *
           * @throws Throwable
           */
       public function run(Process $process): void
       {
                 $process->name('swoft-monitor'); //設(shè)置用戶(hù)進(jìn)程名
      
       while (true) {
      
       CLog::info('用戶(hù)進(jìn)程,每隔3秒輸出一次');//需要處理的工作
       Coroutine::sleep(3);//休眠3秒
       }
       }
      • 注意事項(xiàng)

      1. 自定義進(jìn)程類(lèi)需要打上 Bean 注解

      2. 用自定義進(jìn)程類(lèi)必須繼承 Swoft\Process\UserProcess

      3. 用戶(hù)自定義進(jìn)程類(lèi)的 run 方法是具體的任務(wù)執(zhí)行代碼

      4. 用戶(hù)進(jìn)程需要while循環(huán)來(lái)防止進(jìn)程執(zhí)行完畢后退出

      5. 休眠函數(shù)請(qǐng)使用 Coroutine::sleep(3) 參數(shù)根據(jù)項(xiàng)目實(shí)際情況配置,單位是秒.支持傳小數(shù),如果傳入?yún)?shù)0.5,則代表每 500ms 執(zhí)行一次

      6. 在run方法里不使用 while(true) 而使用 \Swoft\Timer::tick ,也是可以的,但tick更多的用于解決周期性任務(wù),該函數(shù)需要維護(hù)更多的調(diào)用棧,并且觸發(fā) swoft 的內(nèi)置事件,所以它更消耗性能,一般在執(zhí)行頻率要求不高的場(chǎng)景下使用,如果一些執(zhí)行頻率較高的任務(wù)推薦使用 while(true)

      控制臺(tái)打印

      什么是swoft2進(jìn)程

      進(jìn)程池代碼預(yù)覽

      namespace App\Process;
      
      use Swoft\Log\Helper\CLog;
      use Swoft\Process\Annotation\Mapping\Process;
      use Swoft\Process\Contract\ProcessInterface;
      use Swoole\Coroutine;
      use Swoole\Process\Pool;
      use Throwable;
      
      /**
       * Class Worker2Process
       *
       * @since 2.0
       *
       * @Process(workerId={0,1})
       */
      class Worker2Process implements ProcessInterface
      {
       /**
           * @param Pool $pool
           * @param int  $workerId
           *
           * @throws Throwable
           */
       public function run(Pool $pool, int $workerId): void
       {
       while (true) {
       CLog::info('worker-' . $workerId.' context='.context()->getWorkerId());
       Coroutine::sleep(3);
       }
       }
      }
      • 注意事項(xiàng)

      1. 進(jìn)程池進(jìn)程類(lèi)需要打上 Process 注解 且參數(shù)是 workerId 值為分配的進(jìn)程池work進(jìn)程的id數(shù)組.

      2. 進(jìn)程池進(jìn)程類(lèi)需要實(shí)現(xiàn) Swoft\Process\Contract\ProcessInterface 接口.

      3. 進(jìn)程池 Process 注解的 workerId 不是越多越好,需要根據(jù)你的需要設(shè)置,設(shè)置的越多占用的內(nèi)存越多.

      4. 每個(gè) workerid 只允許分配一次,如果分配多個(gè)系統(tǒng)會(huì)拋出異常.

      5. workerid的取值范圍是 0 到 bean.php 配置的 workerNum-1 本文的例子是 0-11

      啟動(dòng)說(shuō)明

      前臺(tái)啟用進(jìn)程

      php bin/swoft process:start

      后臺(tái)啟動(dòng)進(jìn)程

      php bin/swoft process:start -d

      重啟所有 worker 進(jìn)程

      php bin/swoft process:reload

      重新啟動(dòng)

      php bin/swoft process:restart

      停止服務(wù)

      php bin/swoft process:stop

      控制臺(tái)打印

      到此,相信大家對(duì)“什么是swoft2進(jìn)程”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!


      本文題目:什么是swoft2進(jìn)程
      網(wǎng)頁(yè)鏈接:http://www.ef60e0e.cn/article/pghgic.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        资溪县| 息烽县| 阿荣旗| 定兴县| 镇平县| 樟树市| 海南省| 万州区| 正阳县| 重庆市| 翁牛特旗| 通州市| 通河县| 岗巴县| 景宁| 藁城市| 宜丰县| 临高县| 南京市| 蓬溪县| 通渭县| 抚远县| 安塞县| 富平县| 乌兰察布市| 夏邑县| 皮山县| 永安市| 蓝田县| 锡林浩特市| 米林县| 开阳县| 韶关市| 康平县| 托克逊县| 通州区| 芦山县| 台前县| 通化市| 盐边县| 大港区|