laravel время выполнения скрипта

Определяем время работы скрипта PHP

laravel время выполнения скриптаДоброго времени суток, коллеги! 🙂

Сегодня я решил затронуть такую тему, как время выполнения скрипта PHP и его определение.

Не скажу, что данная необходимость возникает каждый день, но время от времени на практике возникают ситуации, когда нужно получить время работы скрипта PHP.

Особенно часто за таким занятием можно застукать разработчиков, занимающихся рефакторингом кода и оптимизацией существующих алгоритмов, когда время выполнения PHP скрипта является ключевым фактором при выборе конечного варианта.

Ну, и ещё иногда данные цифры требуют менеджеры и заказчики, желающие выяснить, сколько времени потребуется на то или иное действие в коде.

Поэтому я и решил написать данную коротенькую заметку, в которой решил изложить порядок действий в аналогичной ситуации.

Сперва мы рассмотрим сам алгоритм определения времени исполнения PHP скрипта, а затем я приведу код, с помощью которого он будет реализовываться.

Время выполнения PHP скрипта — алгоритм определения

Порядок наших действий будет предельно прост:

Полученное в итоге значение как раз и будет временем выполнения PHP скрипта, которое можно будет принимать во внимание при дальнейшей оптимизации и прочих действиях.

Время работы PHP скрипта — реализация алгоритма

Для вывода текущего времени в PHP коде я решил воспользоваться стандартной PHP функцией microtime(), которая возвращает текущую метку времени в Unix формате с микросекундами.

Зачем такая точность?

Затем, чтобы уловить малейшие изменения времени выполнения скриптов, т.к. иногда доли секунды могут быть фатальны и привести к большим потерям при использовании медленного кода в больших масштабах.

laravel время выполнения скрипта

Ну, и плюс, учёт микросекунд при вычислениях влияет на точность калькуляций в положительную сторону.

Для демонстрации своих теоретических повествований я написал простенький скриптик, который вычисляет время прогона пустого цикла с 30 000 000 итераций (решил взять побольше для наглядности):

Как сказано в официальной документации PHP, по умолчанию microtime() возвращает строку в формате «msec sec», где sec — количество секунд с начала эпохи Unix (1 января 1970 0:00:00 GMT), а msec — это количество микросекунд, прошедших после sec.

Функция PHP microtime() имеет всего один параметр get_as_float, при указании которому значения true можно получить текущее время PHP в секундах, прошедших с начала эпохи Unix с точностью до микросекунд.

Поскольку мне нужно было именно текущее время, а не количество секунд с начала эпохи Unix, то я воспользовался данным параметром, что можно видеть в моём коде.

В итоге, с помощью функции echo(), на экран вывелось следующее сообщение: Скрипт был выполнен за 1.3156361579895 секунд.

Чтобы определить, что данная методика работает верно, я решил задать фиксированное время выполнения скрипта с помощью функции sleep(), которая делает задержку выполнения скрипта на указанное количество секунд.

В итоге, следующая конструкция вернула сообщение Скрипт был выполнен за 2.0000510215759 секунд:

Превышение указанной задержки на микроскопические доли секунд можно списать на время вызова кодовых конструкций и обработку результатов их выполнения серверным железом, поэтому на них вполне можно закрыть глаза.

Если они будут всё-таки раздражать вас или вашего заказчика, то можете воспользоваться хаком в виде банального округления до сотых или тысячных долей с помощью PHP функции round(), задействовав её следующим образом:

Результатом выполнения данного куска кода для вышеприведённого примера станет значение в кругленькие 2 секунды, что устроит самых искушённых перфекционистов 🙂

На этом сегодняшняя информация о том, как можно определить время выполнения скрипта PHP, подходит к концу.

laravel время выполнения скрипта

Пишите свои отзывы в комментариях и задавайте интересующие вас вопросы в пабликах проекта в социальных сетях.

Всем удачи и до новых встреч! 🙂

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться 😉

Источник

Создаём свою artisan-команду в Laravel и подсчитываем время её выполнения

laravel время выполнения скрипта

Через CLI (Интерфейс командной строки) очень удобно выполнять длительные и ресурсоёмкие задачи, а с помощью Artisan Console мы можем создавать для этого свои собственные команды. Обычно я делаю специальные команды для приложений, требующих первоначальную настройку, либо для запуска запросов к очень большим базам данных.

В этом уроке я покажу вам, как создать свою artisan-команду и рассчитать время выполнения этой команды.

Существует два способа создания: на основе Класса и на основе Замыкания.

Команда-Замыкание создается внутри файла routes/console.php вашего приложении Laravel.

В этом уроке мы рассмотрим Команду-Замыкание.

Создание Кастомной Команды

Сделаем команду для рассылки электронных писем. Добавьте в файл routes/console.php следующее:

Теперь мы можем запустить нашу новую команду:

Расчёт времени выполнения

Сперва мы определим время начала, а затем вычислим разницу между ним и временем окончания выполнения команды.

laravel время выполнения скрипта

Теперь вы знаете, как создавать кастомные команды и можете с помощью них провести первичную инициализацию приложения или выполнить ресурсоёмкую задачу через консоль.

Наш laravel время выполнения скриптаТелеграм-канал — следите за новостями о Laravel.

Задать вопросы по урокам можно на нашем форуме.

Источник

Человеко понятные интервалы времени при конфигурировании вашего приложения Laravel

В каждом приложении Laravel существует много настроек, в значении которых указывается заданное кол-во секунд или минут. Например, session.lifetime или auth.password_timeout и другие. По умолчанию они все имеют какое то целое число секунд, например 10800. Но сколько это? Некоторые параметры даже не имеют описания того, в каких единицах указываются.

Кто-то из нас поступает иначе. Число 10800 могут заменить на значение 3 * 60 * 60. Можно указывать такие значения и как интервалы дни * минуты * секунды. Но есть нюансы:

К счастью, есть решение для обеих проблем.

Некоторое время назад @marcelpociot опубликовал это решение в Twitter.

В Laravel есть встроенная библиотека Carbon. Этот пакет предоставляет человеко понятный api для записи наших интервалов. Нас так же интересует метод totalSeconds: Например:

Такая запись намного легче читаема и большинство ошибок сами исчезают. Данный пакет полезен будет нам не только в конфигурации, но и в реальном коде, например в кеше TTL, в подписи в url-адресе для указания истечения срока действия и везде, где нам могут понадобиться указать интервалы времени.

Но данный код не будет работать с константами. Потому у нас остается нерешенная проблема с указанием констант числами. В примере ниже я первым комментарием указываю человеко понятное значение константы, а вторым комментарием указываю в каком формате хранится это значение. В секундах или минутах.

Источник

Все о WEB программировании

WEB программирование от А до Я

Заказать сайт:

Социальные сети:

laravel время выполнения скрипта laravel время выполнения скрипта laravel время выполнения скрипта laravel время выполнения скрипта laravel время выполнения скрипта

Партнеры:

Запуск задач по расписанию или интервал времени в Laravel 5.1

laravel время выполнения скрипта

Первое, что нам надо создать скрипт.

Создание скрипта.

Переходим в корень нашего сайта и запускаем следующую команду

Замечание: У меня ОС — Linux, команда для запуска artisan в Windows и MacOS может отличаться. Но параметры, которые передаются команде artisan одинаковые.

Данная команда создает класс Demo, который наследуется от Command. Сам файл с классом Demo находится в app/Console/Commands

Редактируем наш файл следующим образом:

Давайте рассмотрим чуть подробнее данный файл.

Определяет имя команды, при помощи которого мы будем её вызывать.

Определяет описание команды, которое мы видим при вызове artisan без параметров.

Это основной метод, который реализует логику нашей команды.

В данный метод добавим следующий код:

Который в лог файл Laravel добавляет строку «Test — »

Более подробно о создании artisan команд в Laravel Вы можете почитать в официальной документации.

Проверим, запускаем команду

Смотрим файл логов. Вот, что он мне записал

Отлично работает. Теперь добавим нашу команду в Schedule.

Добавление команды в Schedule Laravel.

Первое, что нам нужно сделать – это добавить строку

В Ubuntu это делается просто, запускаем

И вставляем нашу строку.

Дальше открываем файл Kernel.php, который расположен в /app/Console. И в метод schedule добавляем следующую строку:

Вот, что должно получится:

Что означает запускать команду demo каждую минуту. Более подробно о schedule в Laravel Вы можете познакомиться в официальной документации. Сохраняем и проверяем.

Вот вывод моего лога:

Как видим все работает.

Заключение.

В данной статье мы создали команду artisan. В которой использовали метод записи информационного сообщения в лог файл Laravel, использовали Carbon для работы с датой. И поместили команду в график запуска (в нашем случае каждую минуту). Как видите все очень просто.

Источник

Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

#1 28.09.2017 21:19:45

Тайм аут работы скрипта 180 сек. выхожу за пределы

Помогите, знающие люди, сами мы не местные.. упс.. не от туда:)

В двух словах о проблеме(надеюсь экстрасенсы не потребуются).
Загружаю данные в xml со стороннего сервера

там порядка 2К..4К строк каждая с

Вопрос: Что делать и кто виноват. опять не то laravel время выполнения скрипта
Как можно этот скрипт разбить на несколько этапов. Например, обрабатывать 10 строк, потом следующие 10 и.тд

Всем, заранее, спасибо.

Изменено ewgenm (28.09.2017 21:27:34)

Примус. Признание Америки. МОСКВОШВЕЯ. Примус.

Не в сети 21.10.2015

#2 28.09.2017 22:42:52

Re: Тайм аут работы скрипта 180 сек. выхожу за пределы

Может вы и не местные, но как использовать [CОDE] в курсе?

Вопрос: Что делать и кто виноват. опять не то

Можно увеличить лимит времени работы через set_time_limit(0) (0 = отключить лимит). В данном случае это проще и лучше, т.к. скрипт явно консольный и вряд ли потребляет столько ресурсов, чтобы его работу нужно было приостанавливать.

Не в сети 08.04.2012

#3 29.09.2017 07:12:58

Re: Тайм аут работы скрипта 180 сек. выхожу за пределы

Можно увеличить лимит времени работы через set_time_limit(0)

не всегда этого достаточно. nginx и апач тоже имеют обычно настроенные таймауты ожидания, плюс php-fpm в настройках пула также может иметь ограничения, на которые time_limit не влияет

Как можно этот скрипт разбить на несколько этапов. Например, обрабатывать 10 строк, потом следующие 10 и.тд

долгий процессинг лучше вообще не выполнять в контексте веб-запроса. даже если эта выгрузка прилетает через какой-то http-запрос, можно сохранить xml в файл, и запустить обработку в фоне. обычно это делается через Queue и правильно настроенные обработчики очереди. в крайнем случае можно выкрутиться через крон – добавление крон-задач поддерживается даже совсем дубовыми шаред-хостингами… соответственно в браузер ты отдаёшь уже только идентификатор задачи и по нему отображаешь статус – в работе или завершено…

очереди задач как и крон-задачи запускаются через artisan команднострочным пхп-интерпретатором, на нём всегда set_time_limit = 0

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *