2012-05-10 74 views
1

快速問題在這裏,我有一個運行過程,抓取RSS源並將它們添加到mySQL數據庫。等待PHP中的任務完成,然後再轉到下一個項目

在此過程中,我將使用Readability API抓取URL內容。

現在,這對單個條目工作正常,但由於此腳本可以有數百個條目,因此沒有任何內容正在插入到我的數據庫中。

我想知道它是否沒有機會完成該過程,並立即跳到RSS中的下一個條目。

任何人都可以提出一種讓它在完成之前完成的方法嗎?代碼如下:

$db_hostname="localhost"; 
$db_username="myusername"; 
$db_password="mypassword"; 

try 
{ 
/* query the database */ 

$db = mysql_connect($db_hostname,$db_username,$db_password); 
if (!$db) 
{ 
    die("Could not connect: " . mysql_error()); 
} 
mysql_select_db("MyDB", $db); 


// Get stories that don't have a the readability assigned 
$query="select item_id, item_url from tw_articles_parse where story_readability = '' LIMIT 0 , 1"; 
$result=mysql_query($query); 
$num=mysql_numrows($result); 
// Close the DB connection 
mysql_close(); 


// Start the loop of source RSS feeds 
$i=0; 
while ($i < $num) { 

    $item_url=mysql_result($result,$i,"item_url"); 
    $item_id=mysql_result($result,$i,"item_id"); 

    // Parse the story URL into the Readability API 
     $url = "https://www.readability.com/api/content/v1/parser?url=$item_url&token=myapikey"; 
     // Get the contents of the JSON returned by the API 
     $json = file_get_contents($url); 
     // Decode the JSON 
     $out = json_decode($json, true); 
     // Set the content as a variable 
     $story = mysql_real_escape_string($out['content']); 

     // Insert into the DB - Adding 0 to story_club_id as default 
     $item_insert_sql = "UPDATE tw_articles_parse SET story_readability=$story WHERE item_id='" . $item_id . "'"; 
     $insert_item = mysql_query($item_insert_sql, $db); 



$i++; 
}// end the loop of feeds 


    } catch (Exception $e) 
{ 
echo 'Caught exception: ', $e->getMessage(), "\n"; 
} 
+0

什麼是所有這些標籤做什麼呢? – PeeHaa

+1

請停止使用古老的'mysql_ *'函數編寫新代碼。他們不再被維護,社區已經開始[棄用流程](http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 –

+1

如果你的SET不是story_readability ='$ story' – gunnx

回答

0

可能沒什麼插入,因爲你正在使用UPDATE語句,並且有根本就沒有這樣的記錄與correspoding ITEM_ID更新? 嘗試改變更新查詢插入...對重複密鑰更新

不幸的是,我們不知道你的數據庫方案,但這樣的事情應該工作:

$item_insert_sql = "INSERT INTO tw_articles_parse (story_readability, item_id) VALUES ('$story', $item_id) ON DUPLICATE KEY UPDATE story_readability='$story'"; 
0

也許你內存不足或時間耗盡?啓用警告和錯誤報告:

ini_set("display_errors", 1); 
error_reporting(E_ALL); 
相關問題