Re: [請益]自動執行網頁php

看板PHP作者 (我要幸福)時間11年前 (2015/01/12 17:57), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串4/4 (看更多)
※ 引述《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

01/13 15:53, , 1F
推分享
01/13 15:53, 1F

01/13 22:33, , 2F
1> 跟 > 其實是同一件事情,沒有指定的話預設會用 stdout
01/13 22:33, 2F

01/13 22:34, , 3F
然後兇手其實是&,被當成背景執行所以攔不到 stdio[汗]
01/13 22:34, 3F

01/13 22:35, , 4F
解法也很簡單,改成 curl "http://localhost?a=1&b=2"
01/13 22:35, 4F

01/13 22:35, , 5F
就好了,加個單引號這樣
01/13 22:35, 5F

01/13 22:35, , 6F
一下沒想到要塞 query string 就忘了這事[汗]
01/13 22:35, 6F

01/13 22:36, , 7F
urlencode()會動其實是歪打正著..&會被跳掉,然後server端
01/13 22:36, 7F

01/13 22:37, , 8F
又自動把urlencode 過的 query string 轉回來...
01/13 22:37, 8F
文章代碼(AID): #1Kivg4Wi (PHP)
討論串 (同標題文章)
文章代碼(AID): #1Kivg4Wi (PHP)