(fixed and working fine now, but if anyone still wants to refactor, leave a note)
Bu bir tarih aralığı üzerinde dolaşır ve her benzersiz bir tamsayı atar Ben bir fonksiyonun aşağı sıyrılmış versiyonu ...
When working with large datasets, running this several times over different date ranges, I'm getting a fatal error, assigning too much memory to the script and it dies in this loop...
Fatal error: Allowed memory size of 268435456 bytes exhausted
fixed, yineleme dikkate potansiyel günışığı-tasarruf-zamanı em> almayan bir konuydu
Birisi ay / ints listesini üreten bir daha optimal bir şekilde tavsiye verebilecek Yani, ben merak ediyordum ...
O bana ne gibi numarası Int başlatmak için izin gerekir
<?php
// updated: 2010.11.04 with Qwerty's recommendations
// for fixing daylight savings time issue
function monthIterate($monthInt, $startDate, $stopDate) {
$epoch = $startMain = strtotime($startDate);
$stopMain = strtotime($stopDate);
while ($epoch <= $stopMain) {
// get the start/stop dates for "this month"
$start = date("Y-m-01", $epoch);
$stop = date("Y-m-t", $epoch);
// uniqueID for the month
$monthKey = "Month#-".str_pad($monthInt, 3, "0", STR_PAD_LEFT);
$months[$monthKey] = compact('start', 'stop');
// move forward in loop, +1 day should get us to the next month
$epoch = strtotime($stop);
$currentMonth = $nextMonth = date('m', $epoch);
while ($currentMonth == $nextMonth) {
$epoch = $epoch + 86400;
$nextMonth = date('m', $epoch);
}
$monthInt++;
}
return $months;
}
?>