当脚本超时时,您对此无能为力(因为它运行在一个bloddy共享托管资源上,您对脚本超时没有控制权),您是否可以运行register shutdown或类似的操作?
你可能会问这个问题和wordpress到底有什么关系。。。
嗯,有点像。
在我的迁移例程中,我处理一个10000条记录表,并进行一些繁重的解析。我必须选择,因为我需要那里的一切。页面最终超时。下一次运行同一页时,我得到了一个允许的内存大小33554432字节耗尽(试图分配9967617字节)。。。\\wp包括\\个功能。php在线3335
未涉及插件,未更改任何设置。我可以随时生成此错误。所以不要说检查你最后的行动&;插件和所有这些请。这是一个普通版本,安装5分钟后就会得到。
嗯,我的第一反应是在RS上运行mysql\\u free\\u结果!
但问题是在什么时候?这样做的最佳时机是在超时发生之前。因此,需要关闭功能。。。但问题是我怎样才能在那里做到?
最合适的回答,由SO网友:Eugene Manuilov 整理而成
我在编写备份插件时也遇到了同样的问题。当您通过调用$wpdb->get_results( ... )
. 正如您可以假设的那样,它将所有数据提取到为php分配的内存中。更好的方法是使用mysql_*
函数逐个提取行并将数据存储到临时文件中。这种方法将极大地减少内存使用。
我建议您这样做:
$result = @mysql_query( sprintf( \'SELECT * FROM `%s`.`my_big_table`\', $wpdb->dbname ), $wpdb->dbh );
if ( $result ) {
while ( ( $row = @mysql_fetch_array( $result, MYSQL_NUM ) ) ) {
// save each row to temp file
fwrite( $handle, prepare_row_to_save_into_file( $row ) );
}
@mysql_free_result( $result );
}