システム仕様: Windows Server 2008 R2 SP1 を実行する VPS 64 ビット デュアル コア 2.39GHz VCPU 2GB RAM Parallels Plesk for Windows 10.4.4 IIS 7.5 PHP 5.2.17 MySQL 5.1.56
静的ファイルをループし、各行を MySQL の行としてインポートする PHP スクリプトがあります。ファイルが一度に数千行に分割されている場合、これは問題なく機能しますが、多くの手作業が必要になります。
ファイル全体には、インポートする約 160,000 行が含まれています。スクリプトは現在、mysql_connect / mysql_select_db 経由でデータベースに接続し、mysql_query でループを処理し、ループの最後で切断します。ただし、約 55 秒から 1 分 35 秒の間の任意の時点で、クライアント ブラウザは 500 Internal Server Error ページを返しますが、これには有用な診断情報が含まれていません。
MySQL、PHP、IIS、さらには winsock の最大ユーザー ソケットの最大接続時間を増やしてみましたが、役に立ちませんでした。
挿入クエリごとにMySQLへの接続/切断を実行しようとしましたが、これによりサーバーへの数千の接続が発生し、「TIME_WAIT」状態でスタックし、おそらく不十分なために「サーバーに接続できませんでした」というエラーが返されましたソケットが残っています。また、mysql と mysqli の両方の拡張機能を試しました。
IIS と MySQL のすべてのログを確認しましたが、原因の特定に役立つものは何も見つかりませんでした。
最後の 2 回の試行では、それぞれ 33,979 行と 78,173 行が挿入されました。
誰でも何か援助を提供できますか?
ありがとう。
** アップデート **
これは IIS の問題に違いありません。コマンドライン PHP 経由で実行するようにスクリプトを変換したところ、ファイル全体が問題なく処理されました。