使用PHP将日期从MySQL格式转换为Excel的最佳性能策略
我对PHP、MySQL(和Zend框架)还是有点陌生。我需要将日期转换为MM/DD/YYYY格式的字符串,以便与另一个系统接口 我有这个功能,我已经确定它是这个特定脚本的主要性能杀手。当结果集相当小(40或50行)时,它运行得很快,不到一秒钟。但是当有更多的记录时,比如4000条,这个函数需要大约4分钟。不太好 对于这种情况,提高性能的最佳策略是什么使用PHP将日期从MySQL格式转换为Excel的最佳性能策略,php,performance,mysql,zend-framework,Php,Performance,Mysql,Zend Framework,我对PHP、MySQL(和Zend框架)还是有点陌生。我需要将日期转换为MM/DD/YYYY格式的字符串,以便与另一个系统接口 我有这个功能,我已经确定它是这个特定脚本的主要性能杀手。当结果集相当小(40或50行)时,它运行得很快,不到一秒钟。但是当有更多的记录时,比如4000条,这个函数需要大约4分钟。不太好 对于这种情况,提高性能的最佳策略是什么 public function convertDatesToExcelFormat() { $sql = "Select fil_id,
public function convertDatesToExcelFormat() {
$sql = "Select fil_id,
BIRTH_DATE,
WILL_DATE,
LAST_CODICIL_DATE,
TRUST_DATE,
POA_DATE
FROM adds";
$result = $this->getAdapter()->fetchAll($sql);
foreach ($result as $rowset => $row) {
foreach ($row as &$val) {
if (strpos($val, ':')) {
$val = preg_replace('/[0-9]+:[0-9]+:[0-9]+/', '' , $val);
$val = preg_replace('/-/', '/', $val);
$val = substr($val, -6, 5) . '/' . substr($val, 0, 4);
}
}
$data = array(
'BIRTH_DATE' => $row['BIRTH_DATE'],
'WILL_DATE' => $row['WILL_DATE'],
'LAST_CODICIL_DATE' => $row['LAST_CODICIL_DATE'],
'TRUST_DATE' => $row['TRUST_DATE'],
'POA_DATE' => $row['POA_DATE'],
);
$where = $this->getAdapter()->quoteInto('fil_id = ?', $row['fil_id']);
$this->update($data, $where);
}
return $this;
}
php有一个非常有用的函数,名为date_format,其形式为
$newDateVar = date_format('d-M-Y', $inputDateVar);
上面的字符串“d-M-Y”可以以各种格式转换。看看php站点,它提供了可用格式的完整分类
让数据库来做这件事:。这个正则表达式是性能杀手。为什么是第二个循环?没有任何意义。感谢MySQL链接。你确定第二个循环没有意义吗?这可能是Zend框架的一个特点,但这就是我提取值的方式。你将如何重写循环?当你让数据库进行格式化时,你根本不需要这个循环。@Falcon-对,但是如果数据库没有这样做(就像上面代码中的情况),那么嵌套循环是必要的,对吗?@maple_shaft这是一个很好的观点,但是另一台服务器上有另一个脚本(我没有访问权限)具体要求这是一个字符串来进行上传。那边有人认为我们能够上传excel文件而不是CSV会“更容易”,但他们这样做是为了所有字段都需要文本数据类型(字符串)。