xf3/met

MET类提供了一种方法,通过将脚本执行分割成部分来克服PHP的max_execution_time指令限制

dev-master 2014-05-06 08:49 UTC

This package is not auto-updated.

Last update: 2024-09-24 05:25:58 UTC


README

#MET

MET库允许通过将代码执行分割成部分来克服PHP的max_execution_time限制。

##描述

如果您无法修改PHP的max_execution_time指令,需要执行长时间运行的脚本,可以使用MET将其分割并保存更改后重新运行。

运行之前,类会检查保存数据的能力:* 为Web请求启动会话 * 以CLI模式执行php self_script.php

###使用示例

假设您有一些脚本,该脚本将大量数据库数据导入到文件中

<?php
require 'met/MET.php';

function mysqlClose() {
	mysql_close();
}

mysql_connect('127.0.0.1', 'root', 'password') || die('Error connecting to Mysql');
mysql_select_db('bigdata_db') || die('Error switching database');

$MET = new MET();

$offset = $MET->value('offset', 0);

$r = mysql_query('SELECT * FROM logs ORDER BY id LIMIT '.$offset.' LIMIT 50');

while($row = mysql_fetch_assoc($r)) {
	appendToLogFile($row);
	++$offset;
	$MET->check('offset', $offset, 'mysqlClose');
}

mysqlClose();

这里我们定义了$offset变量(首次调用为0),并在每次行迭代后检查时间限制是否接近。

如果需要重新加载,则将$offset变量更新为当前值,并在退出前调用用户定义的mysqlClose函数来关闭现有的MySQL连接。