2013-06-20 13 views

risposta

0

Assicurati di aver aggiunto le linee xdebug al tuo cli php.ini, non solo l'apache php.ini. Su Ubuntu è su /etc/php5/cli/php.ini. Si dovrebbe aggiungere queste righe al file: zend_extension =/usr/lib/php5/20.100.525 + LFS/xdebug.so xdebug.profiler_enable = 1 xdebug.profiler_output_dir =/path/to/output_dir xdebug.profiler_output_name = cachegrind.out% R.% t

EDIT:. Ops, hai ragione, stavo pensando di usare Cachegrind. Le linee da aggiungere sarebbero sotto, ma il mio punto principale è lo stesso. Assicurati di dare un'occhiata al cli php.ini.

[xhprof] 
extension=xhprof.so 
xhprof.output_dir="/var/tmp/xhprof" 
+1

domanda riguardava xhprof, questo è xdebug –

10

Per scoprire che prova sono in esecuzione lenta, è possibile utilizzare

Installare l'ascoltatore attraverso Compositore e quindi attivare nel tuo phpunit.xml, per esempio

<phpunit bootstrap="vendor/autoload.php"> 
... 
    <listeners> 
     <listener class="JohnKary\PHPUnit\Listener\SpeedTrapListener" /> 
    </listeners> 
</phpunit> 

Per scoprire il motivo per cui test sono in esecuzione lenta, è possibile utilizzare

è possibile configurarlo in phpunit.xml, per esempio

<listeners> 
    <listener class="PHPUnit_Util_Log_XHProf" file="PHPUnit/Util/Log/XHProf.php"> 
    <arguments> 
    <array> 
    <element key="xhprofLibFile"> 
     <string>/var/www/xhprof_lib/utils/xhprof_lib.php</string> 
    </element> 
    <element key="xhprofRunsFile"> 
     <string>/var/www/xhprof_lib/utils/xhprof_runs.php</string> 
    </element> 
    <element key="xhprofWeb"> 
     <string>http://localhost/xhprof_html/index.php</string> 
    </element> 
    <element key="appNamespace"> 
     <string>Doctrine2</string> 
    </element> 
    <element key="xhprofFlags"> 
     <string>XHPROF_FLAGS_CPU,XHPROF_FLAGS_MEMORY</string> 
    </element> 
    <element key="xhprofIgnore"> 
     <string>call_user_func,call_user_func_array</string> 
    </element> 
    </array> 
    </arguments> 
    </listener> 
</listeners> 
+0

dove stai ottenendo XHProf.php file? E che dire del file nella directory xhprof_lib? –

+0

[XHProf.php] (https://github.com/phpunit/phpunit-testlistener-xhprof). [xhprof_lib.php e amici] (https://github.com/phacility/xhprof). – bishop

3

Supplementare @ risposta di Gordon in merito a xhprof.

ci sono due parti:

  1. Il PECL extension
  2. Il user-space viewer

L'estensione PECL aggiunge metodi al motore PHP per la raccolta delle metriche. È necessario installare questa estensione.

Il visualizzatore spazio utente fornisce un'interfaccia Web per la comprensione dell'output della raccolta di metriche. Non è necessario, ma davvero desidera esso. A meno che non ti piaccia guardare i dati delle metriche non elaborati.Per installare e configurare il visualizzatore user-space in modo che PHPUnit possa profilare i test:

(1) Aggiungere questi pacchetti per il vostro composer.json:

composer require "facebook/xhprof:[email protected]" --dev 
composer require "phpunit/test-listener-xhprof:1.0.*@dev" --dev 

(2) Configurare il server web per servire il fornitore/directory facebook/xhprof/xhprof_html /. Ricorda l'URL.

(3) Adattare la configurazione PHPUnit esistente in un phpunit-xhprof.xml simile a questo. Assicurati di cambiare il "appNamespace" per abbinare il vostro codice e cambiamento "xhprofWeb" per l'URL dal passaggio 2:

<phpunit> 
    <testsuites> 
    <testsuite name="All Tests"> 
     <directory suffix="Test.php">tests/</directory> 
    </testsuite> 
    </testsuites> 
    <listeners> 
    <listener class="PHPUnit\XHProfTestListener\XHProfTestListener" file="vendor/phpunit/test-listener-xhprof/src/XHProfTestListener.php"> 
    <arguments> 
     <array> 
     <element key="appNamespace"> 
     <string>App</string> 
     </element> 
     <element key="xhprofWeb"> 
     <string>http://localhost/vendor/facebook/xhprof/xhprof_html/index.php</string> 
     </element> 
     <element key="xhprofLibFile"> 
     <string>./vendor/facebook/xhprof/xhprof_lib/utils/xhprof_lib.php</string> 
     </element> 
     <element key="xhprofRunsFile"> 
     <string>./vendor/facebook/xhprof/xhprof_lib/utils/xhprof_runs.php</string> 
     </element> 
     <element key="xhprofFlags"> 
     <string>XHPROF_FLAGS_CPU,XHPROF_FLAGS_MEMORY</string> 
     </element> 
     <element key="xhprofIgnore"> 
     <string>call_user_func,call_user_func_array</string> 
     </element> 
     </array> 
    </arguments> 
    </listener> 
    </listeners> 
</phpunit> 

(4) Eseguire PHP e raccogliere statistiche: phpunit -c ./phpunit-xhprof.xml

Vedrai uscita simile al seguente:

* BishopB\Pattern\Exception\InvalidArgumentTest::test_hierarchy 
    http://localhost/vendor/facebook/xhprof/xhprof_html/index.php?run=556e05cec844c&source=BishopB\Pattern 

Questo è l'URL che è stato configurato per visualizzare il risultato della corsa. Se si desidera visualizzare i dati grezzi metriche, trovare la chiave run ("556e05cec844c", in questo esempio) nella directory temporanea:

$ ls -l /tmp/556e05cec844c.BishopB\\Pattern.xhprof 
-rw-rw-r-- 1 bishop staff 16963 Jun 2 15:36 /tmp/556e05cec844c.BishopB\Pattern.xhprof 
Problemi correlati