我正在创建一个成功的URL数组并解析存储在临时目录中的文件。这很好,直到阵列变大并最终导致最大ram超过。处理此流程的最佳解决方案是什么,以便无论CSV中的URL数量多少都可以处理?
if($fh = fopen( ($fileName) ? $fileName : $this->file->getTempName() , 'r'))
{
// iterate through all lines of file
while($line = fgetcsv($fh, self::MAX_READ, self::DELIMITER)){
$this->addUrl(array(
self::SOURCE => $line[self::FROM_COLUMN],
self::DESTINATION => $line[self::TO_COLUMN],
self::EXPIRY_TIME => $line[self::DATE_COLUMN]
));
}
fclose($fh);
}
public function addUrl( $url)
{
$this->urls[] = $url;
}
在我的处理器类中:
foreach($urls as $entry)
{
// new url instance
$url= new Url();
$url->source = $entry[CSV::SOURCE];
$url->destination= $entry[CSV::DESTINATION];
$url->save();
}