Числа взяты из самого Excel, даты хранятся в Excel в виде числовых значений. http://www.cpearson.com/excel/datetime.htm
Для платформы Laravel 5.6 и пакета maatwebsite / excel версии 3.1 для преобразования даты из чисел Excel в обычный формат даты, эта функция
PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($dateFromExcel)
может быть использована. Он принимает целое число (дата Excel) и возвращает объект DateTime.Дополнительную информацию можно найти здесь https://github.com/Maatwebsite/Laravel-Excel/issues/1832
blockquote>Из этого ответа: https : //stackoverflow.com/a/55139981/9133724
PHP просто не может работать с такой скоростью, как C, простой и простой.
Я не уверен, лучше ли производительность, но Вы могли бы использовать рекурсивный итератор каталога для создания кода более простым... Посмотрите RecursiveDirectoryIterator
и 'SplFileInfo'.
$it = new RecursiveDirectoryIterator($from);
foreach ($it as $file)
{
if ($file->isDot())
continue;
echo $file->getPathname();
}
Прежде чем Вы начнете изменять что-либо, представите свой код.
Используйте что-то как Xdebug (плюс kcachegrind для симпатичного графика) для обнаружения, где медленные части. Если Вы начнете изменять вещи вслепую, то Вы не доберетесь нигде.
Мой только другой совет уже состоит в том, чтобы использовать итераторы каталога SPL, как отправлено. Разрешение внутреннему C кодировать делает работа почти всегда быстрее.
Почему Вы ожидали бы, что интерпретируемый код PHP будет с такой скоростью, как скомпилированная версия C находки? Быть только вдвое более медленным на самом деле довольно хорошо.
О единственном совете я добавил бы, должен сделать ob_start () вначале и ob_get_contents (), ob_end_clean () в конце. Это могло бы ускорить вещи.
Вы сохраняете потоки каталога N открытыми, где N является глубиной дерева каталогов. Вместо этого попытайтесь читать ценность всего каталога записей сразу и затем выполните итерации по записям. По крайней мере Вы максимизируете использование стола кэши ввода-вывода.
Вы могли бы хотеть серьезно рассмотреть просто использование, которое находит GNU. Если это будет доступно, и безопасный режим не включен, то Вам, вероятно, понравятся результаты очень хорошо:
function list_recursive($dir) {
$dir=escapeshellcmd($dir);
$h = popen("/usr/bin/find $dir -type f", "r")
while ($s = fgets($h,1024)) {
echo $s;
}
pclose($h);
}
Однако там мог бы быть некоторым каталогом, это является настолько большим, Вы не собираетесь хотеть обеспокоиться этим также. Рассмотрите амортизацию замедления другими способами. Ваша вторая попытка может быть отмечена контрольной точкой (например), путем простого сохранения стопки каталога на сессии. Если Вы даете пользователю список файлов, просто собираетесь, pageful затем сохраняют остальную часть состояния на сессии для страницы 2.
Попробуйте использовать scandir ()
для чтения всего каталога сразу, как предложил Джейсон Коэн. Я основал следующий код на коде из комментариев руководства php для scandir ()
function scan( $dir ){
$dirs = array_diff( scandir( $dir ), Array( ".", ".." ));
$dir_array = Array();
foreach( $dirs as $d )
$dir_array[ $d ] = is_dir($dir."/".$d) ? scan( $dir."/".$d) : print $dir."/".$d."\n";
}