我知道人们通常会抱怨脚本无法正常工作,但是即使我希望脚本停止工作,它仍然可以继续工作。PHP脚本在应该失败时继续工作
我有一个CSV分析器,其分析线和在DB表中插入条目。我正在为项目使用PDO和Zend框架。代码工作正常..实际上太好了。
public function save()
{
$memory_limit = ini_get('memory_limit');
ini_set('memory_limit', '512M');
$sql = "
INSERT INTO my_table (
date_start,
timeframe,
type,
country_to,
country_from,
code,
weight,
value
) VALUES (?,?,?,?,?,?,?,?)
ON DUPLICATE KEY UPDATE
weight = VALUES(weight),
value = VALUES(value)
";
if ($this->test_mode) {
echo $sql;
return;
}
$stmt = new Zend_Db_Statement_Pdo($this->_db, $sql);
foreach($this->parsed_data as $entry){
$stmt->execute(array_values($entry));
$affected_rows = $stmt->rowCount();
if ($affected_rows){
$this->_success = true;
}
}
unset($this->parsed_data, $stmt, $sql);
ini_set('memory_limit', $memory_limit);
}
由于我正在解析一个大文件,脚本需要几秒钟才能完成。当我尝试停止脚本时,出现问题,使用ESC或甚至关闭页面。该脚本不会停止,直到它完成插入所有条目。即使Apache重新加载也没有解决这个问题,可能重启会执行。
我认为这是不正常的行为,也许是我做错了什么,所以我要求的建议。
谢谢。
UPDATE ignore_user_abort关闭(默认行为),因此用户中止,应考虑..
一个正在运行的线程,是一个正在运行的线程。考虑一下:如果我开始将一个大文件从一个文件夹复制到另一个文件夹,并确定它耗时过长,并终止查找器/资源管理器窗口,我开始复制,文件传输是否会停止?我希望你在这里也有同样的问题。 – DampeS8N 2010-12-06 16:04:59
这听起来像你正在尝试使用PHP作为脚本语言。您可能想从命令行解释器运行此代码,而不是通过浏览器来获取更多控制权。 – 2010-12-06 16:05:21