2012-04-07 17 views
0

私はcURLを使用して最初に認証し、次にPOST経由でCMSにログインしました。PHP Transaction-like SQLが必要ですか?

もう一度POSTを実行して、新しいコード番号(バウチャーコードなど)を生成し、1ページあたり約70行のURLからcsvを取得します。

私は各行を分解し、前​​に生成された新しいコード番号の最後の行を取得できます。

私の質問は、多くのお客様が多くのリクエストを作成した場合、誤って同じバウチャーコードを読み取る可能性がありますか? cURLはかなり早くcsvファイルを取得しますが、要求を先に完了する必要があるかどうかを確認する必要がありますか? SQLトランザクションのように。

私はどこからでもPHPを並列で実行しませんが、私はこれらすべての初心者ですから、誰かが私のスクリプトで複数の要求に対してそれを引き起こすかどうか尋ねました。前もって感謝します。

答えて

0

同じバウチャーコードを取得する唯一の方法は、リモートサーバーが同じコードを2回生成するかどうかです。 php do not run in parallelというのは正しいですが、並行性はあなたの特定のケースとは何の関係もなく、2つのHTTPレスポンスが異なるTCPストリームであなたに送り返されるため、互いに混ざり合うことはありません。 OSの基本的なTCP/IPスタックは、衝突を防ぎます。

これに関係なく、データを受信した後で衝突をチェックできるはずです。たとえば、SQLデータベースに挿入する場合、コードを保持するフィールドに一意のインデックスを作成することができ、データベースによって重複した行が挿入されなくなります。サイドノートとして

、あなたは真であるcan explode each line言うが、あなたはあなたのために行を解析して、アカウントのエスケープシーケンスとエッジ例すべての種類になりますこれは、fgetcsv()str_getcsv()を見てすることを望むかもしれませんあなたがコードすることは考慮されません。一度に複数のcURL要求を実行する場合は、curl_multi_exec()を参照すると、複数の要求を同時に実行してスクリプトの実行を高速化できます。

+0

恐らく私は心配しているのは、複数のリクエストが既に行われているバウチャーコードを生成するために、一度にリモートサーバーが遅く/遅い場合です。この場合、phpはどのようにしますか?phpは最初のリクエストを処理し、最初にリクエストが返されたことを確認してから2番目のリクエストが開始されますか?または両方が同時にリモートサーバーにバウチャーを生成するように依頼できますか?これが問題になる可能性がある場合、私はデータベースを使用することを考えていました。 Btw、fgetcsv()は、各フィールドを配列にし、csvには10個のフィールド/行が含まれると考えています。私は2番目のフィールドだけがコードであることを知っています、なぜ私は爆発 '\ n'を使用し、最後の配列ラインを取得します。 – Ardeus

関連する問題