0

最初にcURLを使用して認証し、次にPOST経由でcmsにログインしました。

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

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

私の質問は、多くの顧客から多くのリクエストが作成された場合、同じバウチャーコードを誤って読み取ってしまう可能性はありますか?cURLはcsvファイルをかなり高速に取得しますが、リクエストを最初に完了しなければならないことを確認する必要がありますか?SQLトランザクションのように。

私はどこかでphpが並行して実行されないことを読みましたが、私はこれらすべての初心者であり、誰かが私のスクリプトが複数の要求に対してそれを引き起こす可能性があるかどうか私に尋ねました。前もって感謝します。

4

1 に答える 1

0

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

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

補足として、あなたはどちらが正しいと言いますが、あなたのために行を解析し、エスケープシーケンスとコード化されていないあらゆる種類のエッジケースを考慮に入れる and を見can explode each lineたいと思うかもしれません. 一度に複数の cURL リクエストを実行したい場合は、一度に複数のリクエストを実行してスクリプトの実行を高速化できる も参照してください。fgetcsv()str_getcsv()curl_multi_exec()

于 2012-04-07T16:44:04.847 に答える