a.php は 2 ページあり、リモートデータを読み取ってデータベースに保存します。1 回の実行に 30 秒以上かかります。
b.php は、データベースの最新の内容を読み取り、それを表示する責任があります。
問題: a.php がまだ読み込まれていない場合 (ブラウザのステータス バーに常に「192.168.1.100 からの応答を待機しています」と表示される)、データベースの内容をリアルタイムで確認するために b.php を手動で更新します。 , しかし、このとき b.php も固まってしまいます(ブラウザのステータスバーにも常に「192.168.1.100 からの応答を待っています」と表示されます)。 a.php が実行されない場合でも、b.php は遅延なく迅速に応答します。
ぜひ答えてほしいです!ありがとうございます
set_time_limit(0) スクリプトの実行時間を上限なしで設定します
set_time_limit(0) は、タイムアウト時間の前に他のページにアクセスするとハングするタイムアウトを設定します。
a.php
set_time_limit(0);
ignore_user_abort(true); //ページを閉じるとまだ実行中です
//code..
すべてのデータがデータベースに挿入された後、忘れずに exit を追加してください。それは意味ですか? aとbは同時に実行されますか?なぜ待つのですか? CPU を割り当てる時期はまだ来ていませんか?まだリソースを待っていますか?
PHP はマルチスレッドをサポートしていません。マルチスレッドをシミュレートするには Apache を使用してください。
データベースはロックされていますか?
データベースはロックされていますか? それはテーブルロックであるはずです
データベースはロックされていますか? それはテーブルロックであるはずです
A がデータを読み取ってテーブルに書き込んでいるとき、B を使用して読み取っている場合、テーブルはおそらくキューイング段階にあります。待機効果をより人間味のあるものにするために、ajax を使用してみてください。
MySQL のロックはテーブルレベルのロックであるようで、行ロックをサポートしていません。扱いが難しい。
しかし、作者はロックを使用していないようです。 mysql はデフォルトではロックを有効にしていないためです。
一度に挿入されるデータ量が多すぎるためですか?