【发布时间】:2012-11-16 08:15:42
【问题描述】:
我必须在 PHP 脚本中更新数据库中的 11M 行。
一段时间后,脚本冻结或崩溃。我必须重新启动 EasyPHP 12,然后重新加载它。
我的配置:
- Windows 7 专业版 64 位
- 英特尔酷睿 i7 860 2.8Ghz
- 8G 内存
我的 my.cnf 文件:
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency = 8
log-bin=mysql-bin
server-id = 1
[mysqldump]
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
这是崩溃的伪代码。
`For i to 100000 { do magic (check content on the web); UPDATE table; }`
【问题讨论】:
-
php与它有什么关系,你的php文件中的逻辑是什么?
-
如果您正在进行交易,您可能会达到交易本身的限制。您是如何确定脚本冻结或崩溃的?
-
你能写一个存储过程来实现你的目标吗?
-
check content on the web部分要小心处理! Web 请求可能会超时,因此请为 wget/curl 设置合理的超时。还要在每个周期后加上echo或print,这样你就知道你在哪里。
标签: php mysql configuration sql-update easyphp