2013-06-01 4 views
5

私は電子メールが特定のアドレスに到着するたびに実行されるcli PHPスクリプトを持っています。ロックされたテーブルから読み込みたい場合、PHPスクリプトは待機しますか?

新しい電子メールが到着すると、スクリプトの新しいインスタンスが実行されますが、同じDBテーブルに対して読み書きが行われるため、間違ったデータが書き込まれることがあります。

私の質問は、必要なすべてのテーブルにロックをかけ、スクリプトの2番目/ 3番目のインスタンスを実行すると、最初に実行されたスクリプトによってロックが解除されるのを待ちますか?もしそうなら、どれくらいの期間ですか?

最後に、私がしようとしているのは、複製とエラーを避けるために、スクリプトを順番に読み書きしていくことです。

+0

具体的な例を提供する必要があります。また、dbがどのように実装されているのか、正確にdbとどのように記述されているのでしょうか。また「間違ったデータが書き込まれました」と定義してください。 – Sharky

答えて

3

はい、待機します。これはデータベースサーバーによって行われ、クライアントアプリケーションはそれが起こっていることに全く気づいていません - わかる限り、データベースは単にクエリを実行するのが遅いだけです。

0

PHPスクリプトは、mysqlクライアント(mysql、mysqli、pdo)を使用して、mysqlクライアントがmysqlサーバーに接続し、クエリを実行するようにします。 mysqlサーバは必要な時にはいつでも使用できます。

しかし、PHPは(任意のMySQLクエリを含めて)スクリプト実行時間の合計を制限するように設定できます。この制限を超えた場合、PHPは実行中のプロセスを強制終了します。最大実行時間はデフォルトで30秒、誤っていない場合はさらに300秒です。これはphp.iniで設定できます。 CLIの最大実行時間を無制限に設定することもできます。

+2

データベースクエリは実行時間に含まれず、Windowsオペレーティングシステムが実行されます。マニュアルページの注記を参照してください:http://php.net/manual/en/function.set-time-limit.php – Nanne

関連する問題