2011-03-13 241 views
0

的白色屏幕PHP get_headers我想測試一下,看看是否我的網頁上存在的FLV視頻流決定是否要顯示的Flowplayer或不前。我想我會在看文件頭有一個去看看,如果發現或沒有(我不知道這是否會actuatlly工作)......使用以下功能:致人死亡

function StreamRunning(){ 

    $file_headers = @get_headers('http://12.34.56.789:1234/stream.flv'); 
    if($file_headers[0] == 'HTTP/1.1 404 Not Found') { // HTTP/1.1 200 OK 
     return false; 
    } 
    else { 
     return true; 
    } 

} 

要測試的東西我硬編碼在流的URL。在現實中,這將是我的電腦從流VLC播放視頻的公網IP地址,但對於本演示中,我已經和12.34取代它...等等。

我得到的問題是這個功能似乎導致死亡錯誤的白頁,讓我不知道什麼是錯的。甚至沒有在我的日誌文件中。我想這確實有兩個問題,

  1. 我的功能有問題嗎? get_headers是否接受這樣的I/P地址 ?
  2. 有沒有更好的辦法,我應該這樣做呢?

在此先感謝!

更新:13-3-11 11:03(GMT) - 如果.flv流實際上在那裏頁面加載正常,如果.flv流丟失get_headers導致死亡白屏,即使所有啓用錯誤報告,不在日誌中。

+3

第一步必須始終** **被除去' @'錯誤抑制運算符。 – 2011-03-13 10:29:59

+3

第二步是啓用錯誤報告:例如'error_reporting(E_ALL);'這應該會給你一個有意義的錯誤信息。 – 2011-03-13 10:41:02

+0

我添加了你的建議,但它仍然導致空白屏幕錯誤。如果我將get_headers行中的URL替換爲其他內容(例如http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png),則可以正常工作。我def添加error_reporting好,因爲它顯示了$ _GET變量,它不會定義它以前從未做過。 – 2011-03-13 10:54:07

回答

0

嘗試之前,一個叫@沒有這個功能 - 你會看到什麼是錯的。

+0

嗨,對不起,我應該補充一點,我試圖刪除@,它沒有任何區別。這是明確的線,導致問題,但因爲我取代了$ file_headers = @get_headers('http://12.34.56.789:1234/stream.flv');用$ file_headers = get_headers('http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png');它運行良好。 – 2011-03-13 10:38:01

0

也許這另一種方式可以工作:

$ch = curl_init('http://12.34.56.789:1234/stream.flv'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
$c = curl_exec($ch); 

echo curl_getinfo($ch, CURLINFO_HTTP_CODE); 
+0

我試過了,它只是做同樣的事情....好吧,我什麼都沒得到。如果我將實際路徑更改爲「http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png」,我收到了回覆! – 2011-03-13 10:45:37

1

當你調用get_headers($url)它執行GET查詢提供的URL,然後返回收到頭。對於普通文檔(如頁面,圖像等),它可以快速執行。 當你請求視頻流試圖接收所有文件,但不能因爲它被超時或類似的事情打斷。

嘗試使用捲曲(所推薦的@sexyprout),但使用HEAD請求而不是GET - 它僅檢索報頭,而不響應內容:

curl_setopt($ch, CURLOPT_NOBODY, 1); 
+0

aaahh,這聽起來是正確的。我試圖修改@sexyprout的例子,但它仍然返回空白。確認我將示例中的第二行替換爲上面的行?我不確定如何將代碼放入回覆中!我會去......'$ ch = curl_init('http://12.34.56.789:1234/stream.flv'); curl_setopt($ ch,CURLOPT_NOBODY,1); $ c = curl_exec($ ch); echo curl_getinfo($ ch,CURLINFO_HTTP_CODE); ' – 2011-03-13 12:44:39

+0

不要替換 - 只要添加它 – Helios 2011-03-13 14:37:51

+0

嗯,我試着添加你的建議,但它仍然給我死亡的白色屏幕。 '$ ch = curl_init('http://12.34.56.789:1234/Secret.flv'); curl_setopt($ ch,CURLOPT_HEADER,1); curl_setopt($ ch,CURLOPT_NOBODY,1); $ c = curl_exec($ ch); echo curl_getinfo($ ch,CURLINFO_HTTP_CODE); '還有什麼想法? – 2011-03-16 00:09:22