看板 PHP 關於我們 聯絡資訊
※ 引述《wild0921 (我要幸福)》之銘言: : ※ 引述《GALINE (天真可愛CQD)》之銘言: : : 感覺像是你想做這樣的事情 : : - 從 DB (或什麼地方)撈出 100 個 URL : : - 同時戳他們,你不需要管回應資料,只想快點戳完(所以想要多執行序) : : 其實你有主機實體權限的話,可以用 command line + php 幹一些事情。像是: : : ---------------------------------------------- : : <?php : : $urls = getAllURL(); // 看你原本怎麼撈出 100 個 URL : : foreach ($urls as $url) { : : popen("curl {$url} > /dev/null 2> /dev/null", 'r'); : : } : : ---------------------------------------------- : : popen() 執行的指令會跟 PHP 分不同的 process 平行跑完。不過 PHP 會等他們都跑完 : : 之後才結束 : : 如果有需要把回應存下來,那麼把指令改成 : : "curl {$url} > /檔案/的/路徑 2>/dev/null" : : 就可以了 : : 不需要把 lynx 扛出來跑 Javascript... : TO GALINE YES~~~我的確是想要這樣做沒有錯 : 我剛剛嘗試著用你上面的語法, popen有執行,但是變數帶不過去 T_T : 使用的$url有帶三個變數, 但是對方網頁回覆error 找不到第二個變數 : 於是乎我把, $url撈出來手動貼到網頁上面執行, 變數有傳過去, 有實現 : 但是我在curl接學網站上面看說get 可以直接接在網址後面即可實現, 真是詭異 嗯....解決了我的問題, 所以上來分享一下如何解決 popen("curl {$url} > /dev/null 2> /dev/null", 'r'); 少了一個 1, 我沒有故意要噹的意思, 只是後來才發現是這問題, 想說分享一下, >> popen("curl {$url} 1> /dev/null 2> /dev/null", 'r'); 用法: 1 如果沒有error要在哪裡顯示 2 如果error要在哪裡顯示 附加一個 沒有提到, 但有可能會用到的東西 "&" popen("curl {$url} 1> /dev/null 2> /dev/null &", 'r'); &主要是在背景執行 參考網址:http://bbs.csdn.net/topics/10438612 另外curl 在 command line 會有參數的值有編碼問題 一般在瀏覽器上面都會自動完成, 在是如果再linux上面就不會自動完成 所以要把帶過去的參數先用urlencode()包起來, 再丟過去 我還在研究位蝦咪丟過去之後, 不用urldecode()就可以直接用 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.45.236 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1421056644.A.82C.html
ChenCH1986: 推分享 01/13 15:53
GALINE: 1> 跟 > 其實是同一件事情,沒有指定的話預設會用 stdout 01/13 22:33
GALINE: 然後兇手其實是&,被當成背景執行所以攔不到 stdio[汗] 01/13 22:34
GALINE: 解法也很簡單,改成 curl "http://localhost?a=1&b=2" 01/13 22:35
GALINE: 就好了,加個單引號這樣 01/13 22:35
GALINE: 一下沒想到要塞 query string 就忘了這事[汗] 01/13 22:35
GALINE: urlencode()會動其實是歪打正著..&會被跳掉,然後server端 01/13 22:36
GALINE: 又自動把urlencode 過的 query string 轉回來... 01/13 22:37