If you’re ever in a situation where something is only happening intermittently, and only on a live server, and only while it’s under load… Lets say its not generating any error_log or stderr output, and you cant run it manually to reproduce… (we’ve all been in this situation) How do you get any debugging output at all?
Step 1: add this to the top of your entry point php file
if ( $_SERVER['REMOTE_ADDR'] == '127.0.0.1' ) { Â Â Â error_log( ' :: ' . getmypid() ); Â Â Â sleep( 10 ); }
Step 2: use curl on the localhost to make the request
Step 3: (this assumes your error log is /tmp/php-error-output) run the following command in a second (root) terminal window
strace -p $(tail -n 1000 /tmp/php-error-output | grep ' :: ' | tail -n 1 | sed -r s/'^.+ :: '//g) -s 10240 2>&1
Good luck…