1

ここで簡単な質問ですが、RSS フィードを取得して mySQL データベースに追加するプロセスを実行しています。

このプロセスでは、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";
}
4

2 に答える 2

0

たぶん、メモリまたは時間が不足していますか?警告とエラー報告を有効にします。

ini_set("display_errors", 1);
error_reporting(E_ALL);
于 2012-05-10T19:17:03.967 に答える
0

UPDATE ステートメントを使用していて、対応する item_id を持つレコードが更新されていないため、おそらく何も挿入されていませんか? UPDATEクエリをINSERT ... ON DUPLICATE KEY UPDATEに変更してみてください

残念ながら、あなたのデータベース スキームはわかりませんが、次のようなものが動作するはずです。

$item_insert_sql = "INSERT INTO tw_articles_parse (story_readability, item_id) VALUES ('$story', $item_id) ON DUPLICATE KEY UPDATE story_readability='$story'";
于 2012-05-10T19:21:29.597 に答える