0

読み込み時間を短縮するために、ウェブアプリケーションの青写真を変更する必要がありました(http://stackoverflow.com/questions/5096127/best-way-to-scale-data-decrease-loading-time-make-my-webhost-happy) 。

このブループリントの変更は、アプリケーションのデータをこの新しいブループリントに移行する必要があることを意味します(そうしないと、アプリが機能しません)。すべてのMySQLレコード(数千のレコード)を移行するために、PHP/MySQLスクリプトを作成しました。

このスクリプトをブラウザで開いても機能しません。無制限の読み込み時間のためにスクリプトの制限時間を0に設定しましたが、数分後にスクリプトの読み込みが停止します。cronジョブも実際にはオプションではありません:1)ロードされないほど奇妙ですが、最大の問題:2)共有サーバーのリソースが多すぎるのではないかと心配しています。

このPHP/MySQLスクリプトを使用して、すべてのMySQLレコードを迅速かつ効率的に移行する方法を知っていますか?

4

2 に答える 2

0

PHPの「ignore_user_abort」を試すことができます。実行を終了するための何らかの方法が必要であるという点で少し危険ですが、スクリプトに時間がかかりすぎたためにブラウザが異常終了する可能性があります。

于 2011-02-26T20:48:40.127 に答える
0

問題を解決しました!

はい、それは多くの時間がかかります、はい、それはサーバーの負荷の増加を引き起こします、しかしそれはただ行われる必要があります。エラーログを使用して、移行中のエラーをチェックします。

どのように?

1)追加ignore_user_abort(true);set_time_limit(0);、スクリプトがサーバー上で実行され続けることを確認します(while()ループが完了すると停止します)。

2)while()ループ内に、stop.txtという小さなテキストファイルを作成して移行スクリプトを停止できるコードを追加しました。

    if(file_exists(dirname(__FILE__)."/stop.txt")) {
    error_log('Migration Stopped By User ('.date("d-m-Y H:i:s",time()).')');
    break;
}

3)移行エラーと重複がエラーログに記録されます:

error_log('Migration Fail => UID: '.$uid.' - '.$email.' ('.date("d-m-Y H:i:s",time()).')');

4)移行が完了すると(を使用してmail())、移行の結果が記載されたメールが届くので、手動で確認する必要はありません。

これは最善の解決策ではないかもしれませんが、一緒に作業するのに良い解決策です!

于 2011-02-27T11:57:21.147 に答える