0

私の問題をうまく説明するために、私は最初に私のスクリプトがこれまでどのように機能するかについていくつかの言葉を書きます。
そのため、あるアドレスで時々更新されるサーバーがありXMLます(たとえば、( ))。次に、指定されたオブジェクトを読み取り、データベースに新しいオブジェクトを配置する、https://someaddress.com/feedback.xml毎日1回(を使用して)実行されるスクリプトを作成しました。これらのオブジェクトを別のスクリプトで取得したい(最新のオブジェクトのみをロードする独立したファイルを作成することが重要です。ここに問題があります。これらの値を直接ロードできますが、この方法ですべてのリストを取得できます。レコード(最新のもののみが必要)の解決策は、値を格納するテーブルに列を追加することです。cronXML

.phpfeedback.xmldatabasebooleanNew?質問ですが、私は自分のを変更することはできませんdatabase。これらのオブジェクトを一部にロードできると思いますarrayが、別のスクリプトに渡すにはどうすればよいですか?以下に、レコードを保存するために使用するメソッドを投稿しますdatabase

$xmlstr = file_get_contents(url);

$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->value as $a) {

    //method to check if record exist

    $rec= new Item($db);

    //method to set values of obj

    $rec->Store();
4

1 に答える 1

1

スクリプトが同じサーバーで実行されている場合、機能する可能性のあるさまざまなアプローチがいくつかあります。

(1)データベースに関連する行のタイムスタンプまたは一意のIDがすでにある場合は、DBにクエリを実行し、これらの列の1つで並べ替えて、結果を1レコードに制限できる場合があります。

select [fields] from records order by created desc limit 1

(2)結果をデータベースに書き込むだけでなく、ローカルファイルに永続化して、毎回そこから読み取ることもできます(これらの結果セットの大きさはどれくらいですか?)。

(3)別のオプションとして、Memcachedを使用して結果セットをメモリに保持し、スクリプトを分離したままにして、情報へのアクセスを非常に高速にすることもできます。これまでにMemcachedを使用したことがない場合は、ぜひご覧ください。この種のタスクに非常に適していて、簡単に使用できます。

スクリプトが異なるサーバーで実行されている場合、(1)は機能しますが、他のスクリプトはさらに検討する必要があります。

于 2013-01-30T14:28:16.723 に答える