Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.10.2025
Сообщений: 3

Профилирование PHP с помощью скрипта

30.10.2025, 21:16. Показов 545. Ответов 5

Студворк — интернет-сервис помощи студентам
Задался вопросом можно ли без штатных инструментов профилирования получить стек вызовов функций/методов (как в debug_backtrace только не обратный, а прямой)
Мне предложили решение, но проблема в том, что пишутся только функции и методы с конкретной страницы скрипта. Вложенные методы уже не пишутся

Подскажите, реально ли предложенное решение доработать под задачу. Предложенное решение ниже.



Этот сниппет помещаем в начало скрипта или подключаем через инклуд
в результате после завершения работы скрипта, даже при exit; в текстовый файл пишется полный трейс вызовов
/tmp/execution_trace.json - поменять на своё

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
$execution_log = [];
$start_time = microtime(true);
 
function log_execution() {
    global $execution_log;
    static $last_call = null;
    
    $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
    if (count($trace) < 2) return;
    
    $current_call = $trace[1]['function'] ?? 'main';
    $file = $trace[1]['file'] ?? 'unknown';
    $line = $trace[1]['line'] ?? 'unknown';
    
    // Записываем только если вызов изменился
    if ($current_call !== $last_call) {
        $execution_log[] = [
            'call' => $current_call,
            'file' => $file,
            'line' => $line,
            'time' => microtime(true)
        ];
        $last_call = $current_call;
    }
}
 
// Запускаем отслеживание
declare(ticks=1);
register_tick_function('log_execution');
 
// Сохраняем при завершении
register_shutdown_function(function() {
    global $execution_log, $start_time;
    
    unregister_tick_function('log_execution');
    
    $result = [
        'total_calls' => count($execution_log),
        'execution_time' => microtime(true) - $start_time,
        'calls' => $execution_log
    ];
    
    file_put_contents('/tmp/execution_trace.json', json_encode($result, JSON_PRETTY_PRINT));
});
 
//дальше весь ваш код на PHP
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2025, 21:16
Ответы с готовыми решениями:

Как назначить переменной php-скрипта значение переменной скрипта js?
Как назначить переменной php-скрипта значение переменной скрипта js? Javascript находится в другом...

Вызов php скрипта из другого скрипта
Есть такой код echo ('&lt;img src=&quot;d.php?q='.$f.'&amp;s='.$z0.'&quot; width=&quot;50%&quot;&gt;'); Т.е. передаем скрипту...

PHP запуск скрипта(ов) на сервере из моего скрипта
Что я хочу сделать: Запускаю я PHP скрипт у себя на ПК, который запускает скрипт на...

5
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
31.10.2025, 06:32
Цитата Сообщение от TommyCode Посмотреть сообщение
Задался вопросом можно ли без штатных инструментов профилирования получить стек вызовов функций/методов
Зачем, если есть штатные инструменты?..
0
0 / 0 / 0
Регистрация: 30.10.2025
Сообщений: 3
31.10.2025, 17:51  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Зачем, если есть штатные инструменты?..
Не всегда есть возможность и доступ их настроить при работе в команде.
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
01.11.2025, 09:47
TommyCode, что это за команда и работа в ней такая, что нельзя использовать штатные инструменты?..
0
0 / 0 / 0
Регистрация: 30.10.2025
Сообщений: 3
01.11.2025, 13:04  [ТС]
Зачем эти лишние бессмысленные вопросы?

Меня интересует помощь по работе register_tick_function() и в целом данной задаче, а не общие фразы, их я и без вас знаю. Да плохо, что не настроить профилировщик, но пока ситуация такая.
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
01.11.2025, 13:06
TommyCode, твой вопрос звучит странно. Звучит как проблема X-Y. Я потому и спрашиваю про обстоятельства и исходную проблему, что может быть решение не такое, как думаешь ты. Вот и всё.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2025, 13:06
Помогаю со студенческими работами здесь

Запрос к БД не выполняется из php-скрипта в зависимости от длительности работы скрипта
Не так давно переехал к другому провайдеру со своим VDS-ом. Все настройки идентичны предыдущему....

Выбрать данные из базы данных с помощью php скрипта
Ситуация следующая необходимо выбрать данные из базы данных с помощью php скрипта. Подскажите где...

Откройте текстовый файл в «Блокноте» или любом другом редакторе с помощью скрипта на PHP
не хочу создавать отдельную тему учу РНР потихоньку по курсу дальше, есть задача которую в темах...

Как остановить выполнение скрипта php другим скриптом php?
Как остановить выполнение скрипта php другим скриптом php?Спасибо!

Выполнить php скрипт внутри другого php скрипта
Добрый день. Есть два скрипта: outer.php и inner.php. В каком-то месте внутри outer.php нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru