Не трогайте командлеты PowerShell для этого, просто используйте robocopy
:
robocopy C:\temp\sourcedirectory C:\temp\targetdirectory *.txt /s
Xdebug переопределяет трассировку памяти в 2.6 (2018-01-29), которая может использоваться в Qcachegrind или аналогичном инструменте. Просто обязательно выберите опцию памяти :)
Из документов:
Начиная с Xdebug 2.6, профилировщик также собирает информацию о том, сколько используется память, а функции aGnd увеличивают использование памяти.
blockquote>Я не знаком с форматом файла, но Qcachegrind отлично поработал для отслеживания пары памяти вопросы.
http://geek.michaelgrace.org/2012/04/tracing-php-memory-usage-using-xdebug-and-mamp-on-mac/
Я нахожусь на Mac, поэтому, если вы в Windows, вам придется протестировать это, но это работает для меня.
Я изменил файл tracefile-analyzer.php и добавил путь к PHP бинарный вверху, чтобы вы могли называть его в терминале как обычный скрипт unix.
#!/Applications/MAMP/bin/php5.3/bin/php
<?php
if ( $argc <= 1 || $argc > 4 )
{
Не забудьте сделать chmod этот файл до 755.
Вы могли бы легко создайте скрипт ruby watchr для автоматического вызова скрипта каждый раз, когда он создает файл профиля памяти (* .xt). Таким образом, вы можете продолжать тестирование и видеть свои улучшения без необходимости повторять команду снова.
Как вы, наверное, знаете, Xdebug отказался от поддержки профилирования памяти с версии 2. *. Пожалуйста, найдите здесь строку «удаленные функции»: http://www.xdebug.org/updates.php
Удаленные функции
blockquote>
Итак, я попробовал другой инструмент, и он работал хорошо для меня.
https: //github.com/arnaud-lb/php-memory-profiler
Это то, что я сделал на моем сервере Ubuntu, чтобы включить его:
sudo apt-get install libjudy-dev libjudydebian1 sudo pecl install memprof echo "extension=memprof.so" > /etc/php5/mods-available/memprof.ini sudo php5enmod memprof service apache2 restart
И затем в моем коде:
<?php memprof_enable(); // do your stuff memprof_dump_callgrind(fopen("/tmp/callgrind.out", "w"));
Наконец откройте файл
callgrind.out
с помощью KCachegrindИспользование Google gperftools (рекомендуется!) [/ G8 ]
Прежде всего установите ggftools Google, загрузив последний пакет здесь: https://code.google.com/p/gperftools/
Затем, как всегда:
sudo apt-get update sudo apt-get install libunwind-dev -y ./configure make make install
Теперь в вашем коде:
memprof_enable(); // do your magic memprof_dump_pprof(fopen("/tmp/profile.heap", "w"));
Затем откройте терминал и запустите:
pprof --web /tmp/profile.heap
pprof создаст новое окно в существующем сеансе браузера, как показано ниже:
[/g11]
Xhp rof + Xhgui (лучшее, на мой взгляд, для профилирования как процессора, так и памяти).
С Xhprof и Xhgui вы можете также профилировать использование процессора или просто использование памяти, если это ваша проблема на данный момент. Это очень полные решения, они дают вам полный контроль, и журналы могут быть записаны как на mongo, так и в файловой системе.
Подробнее см. Мой ответ здесь .
Blackfire
Blackfire - это профилировщик PHP SensioLabs, ребята Symfony2 https://blackfire.io/
Если вы используете puphpet , чтобы настроить свою виртуальную машину, вы будете рады узнать, что она поддерживается; -)
memprof_enable
в свой PHP-код, и я получаю PHP Fatal error: Uncaught Error: Call to undefined function memprof_enable()
. Я сделал gperftools make install из исходного исходного кода.
– Andrey Pokhilko
28 September 2016 в 16:28
php -i
в cli или phpinfo()
, чтобы убедиться, что вы правильно загрузили расширение. Если у вас его нет, возможно, стоит взглянуть на ваши файлы *.ini
.
– Francesco Casula
28 September 2016 в 16:57
sudo pecl install memprof-1.0.0
.
– Djizeus
18 May 2017 в 13:31
Ну, это может быть не совсем то, что вы ищете, но PHP имеет несколько встроенных функций, которые будут выводить использование памяти. Если вы просто хотели узнать, сколько памяти использует вызов функции, вы можете использовать memory_get_peak_usage () до и после вызова и принять разницу.
Вы используете тот же метод вокруг ваших данных, используя очень похожее memory_get_usage () .
Довольно простой подход, но это быстрый способ проверить фрагмент кода. Я согласен с тем, что дельтах xdebug mem может быть слишком многословным, чтобы иногда быть полезным, поэтому я часто просто использую его, чтобы сузить до раздела кода, а затем выгрузить конкретное использование памяти для небольших фрагментов вручную.