xdebug_start_trace si comport in modo strano

Sto provando a ridurre ancora di più il mio utilizzo della memory di script. Sto cercando di generare output con xdebug per analizzare l'utilizzo della memory. È uno script basato su CLI, ha shebang

#!/usr/local/bin/php -q

Passo un parametro e lo controllo con

$argc > 1 && is_numbersc( $argv[1] )

Quando ./script.php 90 a ssh e faccio ./script.php 90 e aggiungo questo codice,

 if( $argv[1] == 90 ) { xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) ); } 

Vedo il file di output nella cartella dei logs .

Ma quando inserisco xdebug_start_trace senza l'istruzione if nello script di produzione, non viene creato alcun file di output.

Lo script.php è chiamato da un altro file php, collocato in un'altra cartella, quindi uso il path assoluto nel nome del file e lo chiamo usando exec e append &> /dev/null & ad esso, quindi viene eseguito in background.

Questo mi sta facendo impazzire! Aiuto, ragazzi!

Non so perché questo si è verificato ma ho ricevuto un errore

PHP Notice: Function trace already started in /var/www/html/script.php on line 9 [Controllare "Modifica" per informazioni]

Sebbene, non ci sia codice che triggers questo xdebug_start_trace(); .

Così ho messo xdebug_stop_trace(); prima di xdebug_start_trace(); , tutto funziona bene.

Strano.

Modifica: stavo ottenendo l'errore di cui sopra in quanto avevo impostato auto_trace su On in php.ini

Inoltre, si scopre che se si aggiunge &> /dev/null & al command, non viene generato alcun registro xdebug. Tuttavia, se faccio &> /dev/null (notare l'ultimo & ), xdebug genera i log. Questo è probabilmente correlato all'output personalizzato che xdebug deve utilizzare internamente. Non sono sicuro, però.

Intendi …

 if( $argv[1] == 90 ) { xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) ); } 

… port a un file di traccia e …

 xdebug_start_trace('/var/www/html/logs/' . rand(1,9999999) ); 

… solo tralasciare l'affermazione condizionale non ti dà nessuno?

E beh, non riesco davvero a credere che la traccia inizi fuori da where … quindi deve esserci una chiamata da qualche parte. Data la tua descrizione sembra che il tuo setup sia piuttosto incasinato. Quindi non penso che il tuo problema sia in qualche modo collegato a XDebug, ma questo fenoless di tracciamento è solo un sintomo random che hai notato.

Prova a creare uno script che sia il più semplice ansible e ti dia ancora questo. Quindi pubblica di nuovo quello che sta succedendo, b / c la tua descrizione è anche IMHO abbastanza confusa.

Migliore

Raffael