PHP觸發耗時指令碼

來源:互聯網
上載者:User

在一個php指令碼中觸發另一個耗時很長的php指令碼,不想等待,怎麼做?curl去觸發需要加個逾時,如果逾時設定短了失敗率很高(網路不穩),長了也很耗時,只是相對時間少一點,fsockopen去觸發需要加個延時(sleep(*)),都要留時間給網路傳輸資料,不是特別好,有其他解決方案嗎?

(必須在伺服器端)

回複內容:

在一個php指令碼中觸發另一個耗時很長的php指令碼,不想等待,怎麼做?curl去觸發需要加個逾時,如果逾時設定短了失敗率很高(網路不穩),長了也很耗時,只是相對時間少一點,fsockopen去觸發需要加個延時(sleep(*)),都要留時間給網路傳輸資料,不是特別好,有其他解決方案嗎?

(必須在伺服器端)

用fsockopen fwrite()後 加上usleep(1000) 就可以了,目前穩定。

問題移步https://segmentfault.com/q/1010000004590173?_ea=660163

另外關於PHP逾時處理要注意:

下面例子是設定資料轉送時的逾時,不是整個串連的逾時。 如果跟我一樣問題的想用當前指令碼觸發另一個耗時很長的php指令碼不要用這種方式,這樣設定是無效的。這樣的設定是代表當前指令碼 等待耗時間長度的另外一個指令碼執行完成後返回資料,傳輸資料時不能超過一秒,不是說串連超過一秒就斷開。

$opts = array(      'http'=>array(        'timeout'=>1, // 設定逾時一秒,此處是大坑。      ));$context = stream_context_create($opts);file_get_contents('http://www.url.com/', false, $context);

如果用CURL
設定逾時

curl_setopt($ch, CURLOPT_TIMEOUT, 1); // 逾時秒curl_setopt($ch,CURLOPT_NOSIGNAL, 1); //設定毫秒時必加curl_setopt($ch,CURLOPT_TIMEOUT_MS, 1000); //逾時毫秒// 注意:這個逾時設定是代表整個串連的逾時設定。不管有沒串連上,有沒傳輸資料,到時間了就斷開,返回false

--- 雲網開 用手機建網站

php非同步 推薦workerman
http://doc3.workerman.net/faq/async-task.html

Swoole效能比workerman高點 因為是純c擴充的緣故

但同樣workerman比Swoole安裝要方便很多

用ajax非同步。

Swoole

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.