<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之旅 廣告
                [TOC] # 隊列 處理視頻,調整圖像大小或發送電子郵件等活動不適合在線或實時執行,因為這可能會減慢頁面的加載時間并嚴重影響用戶體驗。 這里最好的解決方案是實現后臺作業。Web應用程序將作業放入隊列中,并將單獨處理。 雖然您可以找到更復雜的PHP擴展像[RabbitMQ](http://pecl.php.net/package/amqp)等來解決應用程序中的排隊問題;Phalcon為[Beanstalk](http://www.igvita.com/2010/05/20/scalable-work-queues-with-beanstalk/)提供了一個客戶端,這是一個受[Memcached](http://memcached.org/)啟發的工作排隊后端。它簡單,輕便,完全專門用于排隊。 >[danger] 從隊列方法返回的一些數據要求安裝模塊Yaml。有關更多信息,請參閱[此處](http://php.net/manual/book.yaml.php)。您將需要使用Yaml> = 2.0.0 ## 將作業(Jobs)放入隊列 連接到Beanstalk后,您可以根據需要插入多個作業。您可以根據應用程序的需要定義消息結構: ```php <?php use Phalcon\Queue\Beanstalk; // 連接到隊列 $queue = new Beanstalk( [ 'host' => '192.168.0.21', 'port' => '11300', ] ); // 將作業插入隊列中 $queue->put( [ 'processVideo' => 4871, ] ); ``` 可用的連接選項包括: | 選項 | 描述 | 默認 | | ------ | ---------------------------------------- | --------- | | host | beanstalk服務器所在的IP | 127.0.0.1 | | port | 連接端口 | 11300 | 在上面的例子中,我們存儲了一條消息,允許后臺作業處理視頻。消息立即存儲在隊列中,沒有一定的生存時間。 其他選項如:運行時間,優先級和延遲可以作為第二個參數傳遞: ```php <?php // 使用選項將作業插入隊列中 $queue->put( [ 'processVideo' => 4871, ], [ 'priority' => 250, 'delay' => 10, 'ttr' => 3600, ] ); ``` 可以使用以下選項: | 選項 | 描述 | | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | priority | 它是一個整數<2 ** 32。具有較小優先級值的作業將在具有較大優先級的作業之前安排。最緊急的優先事項是0;最緊急的優先事項是4,294,967,295。| | delay | 在將作業放入就緒隊列之前等待的整數秒。在此期間,工作將處于“延遲”狀態。 | | ttr | 運行時間 - 允許工作人員運行此作業的整數秒。這個時間從工人保留這項工作的那一刻算起。 | 放入隊列的每個作業都會返回一個`job id`,您可以使用該ID來跟蹤作業的狀態: ```php <?php $jobId = $queue->put( [ 'processVideo' => 4871, ] ); ``` ## 檢索消息 將作業放入隊列后,后臺工作人員可以使用這些消息,這些消息將有足夠的時間來完成任務: ```php <?php while (($job = $queue->peekReady()) !== false) { $message = $job->getBody(); var_dump($message); $job->delete(); } ``` 必須從隊列中刪除作業以避免雙重處理。如果實現了多個后臺作業worker,則必須`reserved` 作業,以便其他worker進程不會重新處理它們,而其他worker進程則保留它們: ```php <?php while (($job = $queue->reserve()) !== false) { $message = $job->getBody(); var_dump($message); $job->delete(); } ``` 我們的客戶端實現了Beanstalkd提供的一組基本功能,但足以允許您構建實現隊列的應用程序。 ## 高級主題 ### 多個隊列 Beanstalkd支持多個隊列(稱為“tubes”),以允許單個隊列服務器充當各種工作者的集線器。Phalcon很容易支持。 查看服務器上可用的管道(tubes),并選擇要使用的隊列對象的管道: ```php <?php $tube_array = $queue->listTubes(); $queue->choose('myOtherTube'); ``` 使用`$queue`的所有后續工作現在都會操作`myOtherTube`而不是默認值`default`。您也可以查看隊列使用的管道。 您也可以查看隊列使用的管道。 ```php <?php $current_tube = $queue->listTubeUsed(); ``` ### 管道操作 如果需要,可以暫停和恢復管。下面的示例暫停`myOtherTube` 3分鐘。 ```php <?php $queue->pauseTube('myOtherTube', 180); ``` 將延遲設置為0將恢復正常操作。 ```php <?php $queue->pauseTube('myOtherTube', 0); ``` ### 服務器狀態 您可以獲得有關整個服務器或特定管的信息。 ```php <?php $server_stats = $queue->stats(); $tube_stats = $queue->statsTube('myOtherTube'); $server_status = $queue->readStatus(); ``` ### Job 管理 Beanstalkd支持管理作業的能力,既可以延遲作業,也可以從隊列中刪除作業以供以后處理。 埋葬作業通常用于處理可以解決worker進程以外的潛在問題。這需要完成工作并將其放入埋葬隊列中。 ```php <?php $job = $queue->reserve(); $job->bury(); ``` 埋藏作業列表存儲在服務器上。您可以檢查隊列中的第一個埋藏作業。 ```php <?php $job_data = $queue->peekBuried(); ``` 如果埋藏隊列為空,則返回false,否則返回Job對象。 你可以將第一個[N]埋藏的作業踢到埋藏的隊列中,將它們放回就緒隊列中。下面是踢開前三個埋葬作業的例子。 ```php <?php $queue->kick(3); ``` 可以完成將作業釋放回就緒隊列以及可選的延遲。這對于處理作業時的瞬態錯誤很方便。以下是在作業上放置低(100)優先級和3分鐘延遲的示例。 ```php <?php $job = $queue->reserve(); $job->release(100, 180); ``` 優先級和延遲與將作業`put`隊列時相同。 使用`jobPeek($job_id)`可以完成檢查隊列中的作業。下面的示例試圖查看作業ID 5。 ```php <?php $queue->jobPeek(5) ``` 已刪除的作業無法檢查并返回false。就緒,隱藏和延遲作業將返回Job對象。 ### 進一步閱讀 [協議文本](https://github.com/kr/beanstalkd/blob/master/doc/protocol.txt) 包含BeanstalkD的所有內部操作細節,通常被認為是BeanstalkD的實際文檔。
                  <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>

                              哎呀哎呀视频在线观看