搜尋

首頁  >  問答  >  主體

php - 如何在存取一個執行時間比較久的api的時候,不理會它的執行時間和返回值,直接執行下一行程式碼?

如題:

其实大概就是想在打开一个页面的时候,再通过api去触发一个程序,但是这个程序执行的比较慢,我不想在页面里理会它的执行和返回,触发请求之后直接就继续执行后面的代码,请问大家,这种情况时具体用php代码应该如何实现?
阿神阿神2827 天前438

全部回覆(8)我來回復

  • ringa_lee

    ringa_lee2017-05-16 13:12:48

    @dawnblog 說的方法誠然是可以的,但是題主的需求只需要用fsockopen簡單地觸發一下就可以了,並不需要處理回調數據.

    參考: http://www.laruence.com/2008/...

    回覆
    0
  • 黄舟

    黄舟2017-05-16 13:12:48

    這樣告訴你吧,如果你想異步出發程序不是不可以,用socket就可以實現
    具體實施的步驟
    1.發送指令到socket伺服器上
    2.socket接收指令,通過長鏈接的方式,異步發送命令到另外一個任務處理伺服器上
    3.socket直接告知web伺服器收到指令並執行,但任務透過任務處理伺服器來執行. ---- 這一步,相當於ajax異步執行
    4.任務處理伺服器完成後,發送完成指令到socket伺服器上.
    5.由socket伺服器完成指定的任務完成邏輯.
    在第5步中可以細化,當然了,我對於異步是這樣處理的,如果有其他更好的方式請指出不足指出.
    以上程式碼具體實作請查看workman

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:12:48

    小伙子,老夫傳授給你兩字真言:隊!列!

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:12:48

    如果時效性不強的話。推薦快取起來

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:12:48

    fastcgi_finish_request()可以滿足你,php-fpm才支援。 。或是搞個隊列服務

    回覆
    0
  • 为情所困

    为情所困2017-05-16 13:12:48

    php連異步回呼都沒有嗎?哎

    回覆
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:12:48

    swoole進程管理不一樣的PHP 參見swoole進程管理

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:12:48

    這不就是非同步傳輸技術嗎?不使用socket也可以的吧

    回覆
    0
  • 取消回覆