|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2019-06-26 14:05 UTC] lozinskiy dot artem at gmail dot com
Description: ------------ --- From manual page: https://php.net/function.register-tick-function --- PHP Version 7.1.30-1+ubuntu18.04.1+deb.sury.org+ Linux ubuntu 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 06:16:15 UTC 2018 x86_64 --- function intercepts execution of code that is not executed Test script: --------------- <?php declare(ticks=1); function my_function() { echo print_r(debug_backtrace(), 1) . '<br/>'; } register_tick_function('my_function', true); $t = false; $ar = ['test1' => '111']; var_dump('->' . __METHOD__ . ' on ' . __FILE__ . ':' . __LINE__); foreach ($ar as $k => $e) { $t = ($k === 'test2'); var_dump('$t==='. var_export($t, 1)); if ($t===false) { continue; } var_dump('this line code is not executed (execute "continue")'); test2(); test3(); // this will handled or .. // test4(); // uncomment this and this will handled (but function not exist) } var_dump('->' . __METHOD__ . ' on ' . __FILE__ . ':' . __LINE__); function test2() { // this never handled (why? =)) return 1; } function test3() { var_dump('->' . __METHOD__ . ' on ' . __FILE__ . ':' . __LINE__); } Expected result: ---------------- Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 10 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 12 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 13 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:15:string '-> on /var/www/test.local/public/test/tick.php:15' (length=49) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 15 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 19 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:21:string '$t===false' (length=10) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 21 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:34:string '-> on /var/www/test.local/public/test/tick.php:34' (length=49) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 34 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 39 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 43 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Actual result: -------------- Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 10 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 12 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 13 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:15:string '-> on /var/www/test.local/public/test/tick.php:15' (length=49) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 15 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 19 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:21:string '$t===false' (length=10) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 21 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 30 [function] => my_function [args] => Array ( [0] => 1 ) ) ) /var/www/test.local/public/test/tick.php:34:string '-> on /var/www/test.local/public/test/tick.php:34' (length=49) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 34 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 39 [function] => my_function [args] => Array ( [0] => 1 ) ) ) Array ( [0] => Array ( [file] => /var/www/test.local/public/test/tick.php [line] => 43 [function] => my_function [args] => Array ( [0] => 1 ) ) ) --- that wrong... --- on line 30 function intercepted execution on this line PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 07:00:01 2025 UTC |
for example see this code <?php declare(ticks=1); function my_function() { echo print_r(debug_backtrace(), 1) . '<br/>'; } register_tick_function('my_function', true); $t = false; $check = ['a']; foreach ($check as $e) { $t = false; if ($t===false) { break; // break; } else { delete_db(); // =) } } function delete_db() {} --- analysis show me that execute delete_db, and this is problem I see that in the alpha version of php 7.4 there is no such problem, all of a sudden, it pleases, here now to get a patch for php 7.1