2012-05-25 31 views
0

我有三個提交在我的mysql表中,它們是:id,url,狀態使用PHP檢查MySQL數據庫中URL的可用性?

如何檢查列url中的所有URL並將狀態列寫入1(可用)或0(不可用)?

要只檢查網址manualy在PHP W/O MySQL的,我可以用這個:

<?php 
    function Visit($url){ 
    $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 
    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch,CURLOPT_VERBOSE,false); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    $page=curl_exec($ch); 
    //echo curl_error($ch); 
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    curl_close($ch); 
    if($httpcode >= 200 && $httpcode < 300){ 
     return true; 
    } 
    else { 
     return false; 
    } 
} 
    if(Visit("http://www.google.com")){//maybe make it a variable from a result of a mysql select, but how to process it one by one? 
     echo "Website OK"; //maybe somesql here to wtite '1' 
    } 
    else{ 
     echo "Website DOWN";//maybe somesql here to wtite '0' 
    } 
?> 
+0

有沒有需要寫'if(foo){return true;} else {return false; }'只要寫'return foo;'。 –

+0

看起來你沒有考慮到你給出的答案。哦,你有什麼嘗試? –

+0

可能你使用正則表達式嗎? :http://stackoverflow.com/questions/2490310/regular-expression-for-checking-website-url – Sergey

回答

0
echo mysql_num_rows($result) ? '1' : '0'; 
+0

呃?通過對行進行計數可以達到什麼目的? (爲什麼你把它轉換爲字符串?'echo 1;'會工作得很好) –

+0

啊廢話。我太快讀了這個問題。謝啦。 – tim

1

這是壞的表現在一個循環做查詢而言是糟糕的設計,則應該建立批量更新並最終運行查詢,但我現在沒有足夠的時間來詳細說明。這只是讓你開始:

$sql = "SELECT id,url FROM mytable"; 
$res = mysql_query($sql) or die(mysql_error()); 
if($res) 
{ 
    while($row = mysql_fetch_assoc($res)) 
    { 
    $status = visit($row['url']) ? '1' : '0'; 
    $id = $row['id']; 
    $update = "UPDATE mytable SET status = $status WHERE id = $id"; 
    $res = mysql_query($update) or die(mysql_error()); 
    } 
} 
+0

只是想知道,什麼'? '1':'0';'是嗎?謝謝xD – 2012-05-25 08:54:43

+0

這是一個三元運算符,如果<條件爲真>

+0

啊,這很酷。謝謝 – 2012-05-25 09:10:49

0

可以使用SQL查詢,例如:

select id, url from urltable; 
update urltable set status=1 where id=99; 

那麼,如何使用這個代碼與您的訪問功能:

$link = mysql_connect('localhost', 'test', 'pppppp'); 
$db_selected = mysql_select_db('test', $link); 
$query = "select id, url from urltable"; 
$result = mysql_query($query); 
while ($row = mysql_fetch_assoc($result)) { 
    $visitid = $row['id']; 
    $visiturl = $row['url']; 
    $visitstatus = Visit($visiturl)? 1: 0; 
    $upquery = sprintf("update urltable set status=%d where id=%d", $visitstatus, $visitid); 
    $upresult = mysql_query($upquery); 
}