2011-06-27 25 views
2

私はcURLベースのPHPアプリケーションを使用して、非同期要求を行う別のWebサーバーに要求しています。だから、私がやっているのは、返品時に必要となる情報とリクエストの識別情報と一緒に.reqという名前のファイルを作成することです。要求はHTTP-XML-POSTを使用して行われます。ファイルを使用して書かれている: -PHP非同期複数ファイルの書き込みと読み取り

file_get_contents(reqs/<databaseid>.req, FILE_APPEND); 

何が起こることは要求がバルク(毎秒約)で生成されている間に、応答が戻ってWebサーバから来始めるということです。今、何が起こるかの要求の約15%で、ファイル()要求が失敗したということです

$aResponse = file(reqs/<databaseid>.req); 

- を:応答は、応答から受信し、使用して、それに基づいて要求ファイルを開き、別のスクリプトでキャッチされます -

ファイルが存在した後に実行されるクリーンなスクリプトを使用していることが確認されています。

どのようなアイデアですか?

+0

あなたはリクエストを送信してリクエストを書いています。答えを受け取ったら、あなたはリクエストを書いたファイルを開きますか? –

+0

はい、リモートサーバーは...まあ...遠隔であり、他の方法ではアクセスできず、私がそれを返すことができる他のデータには閉じています。 このようにデータを保持する必要があります。 –

答えて

1

flock()などのファイルアクセスを同時に処理する機能がいくつかありますが、通常はデータベースを使用する方が簡単です。まともなDBMSはすでにあなたのためにそれを働いています。

+0

申し訳ありませんが、トランザクションを1秒あたりに修正しました。毎秒少なくとも800を維持しなければならないので、レスポンスのために最低1500インサート/秒、それから毎秒約1200アップデートを話すので、DBルートは使用できません。 したがって、私たちは現在持っていないキャリアグレードのDBサーバーが必要です...! –

+0

さらに、1つのファイルPER要求があり、実際の要求を送信する前に 'file_put_contents(filename、FILE_APPEND) 'を使用してファイルを作成しているため、問題はファイルロックではありません。 –

+0

え?リモートサーバーからローカルデータベースにログを記録するよりも高速にファイルを取得できますか? – symcbean

関連する問題