0

我不得不更改我的 web 应用程序的蓝图以减少加载时间(http://stackoverflow.com/questions/5096127/best-way-to-scale-data-decrease-loading-time-make-my-webhost-happy) .

蓝图的这种更改意味着我的应用程序的数据必须迁移到这个新的蓝图(否则我的应用程序将无法运行)。为了迁移我所有的 MySQL 记录(数千条记录),我编写了一个 PHP/MySQL 脚本。

在我的浏览器中打开此脚本不起作用。我已将脚本的时间限制设置为 0 以无限加载时间,但几分钟后脚本停止加载。cronjob 也不是一个真正的选择:1)它不加载很奇怪,但最大的问题:2)我担心这会花费我共享服务器的太多资源。

您知道使用此 PHP/MySQL 脚本迁移所有 MySQL 记录的快速有效方法吗?

4

2 回答 2

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 回答
0

你可以试试 PHP 的“ignore_user_abort”。这有点危险,因为您需要某种方式来结束它的执行,但是您的浏览器可能会在脚本花费太长时间后中止。

于 2011-02-26T20:48:40.127 回答