3v4l.org

run code in 300+ PHP versions simultaneously
<?php // attiveremo la nostra gestione degli errori error_reporting(); // funzione personalizzata di gestione dell'errore function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars) { // orario per la registrazione $dt = date("Y-m-d H:i:s (T)"); // definisce una matrice associativa con i messaggi di errore // in realtà i soli campi che saranno considerati sono // E_WARNING, E_NOTICE, E_USER_ERROR, // E_USER_WARNING and E_USER_NOTICE $errortype = array ( E_ERROR => "Error", E_WARNING => "Warning", E_PARSE => "Parsing Error", E_NOTICE => "Notice", E_CORE_ERROR => "Core Error", E_CORE_WARNING => "Core Warning", E_COMPILE_ERROR => "Compile Error", E_COMPILE_WARNING => "Compile Warning", E_USER_ERROR => "User Error", E_USER_WARNING => "User Warning", E_USER_NOTICE => "User Notice", E_STRICT => "Runtime Notice" ); // indica gli errori per i quali fare salvare la trace delle variabili $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); $err = "<errorentry>\n"; $err .= "\t<datetime>" . $dt . "</datetime>\n"; $err .= "\t<errornum>" . $errno . "</errornum>\n"; $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n"; $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n"; $err .= "\t<scriptname>" . $filename . "</scriptname>\n"; $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n"; if (in_array($errno, $user_errors)) { $err .= "\t<vartrace>" . wddx_serialize_value($vars, "Variables") . "</vartrace>\n"; } $err .= "</errorentry>\n\n"; // for testing // echo $err; // salva nell'errorlog e invia un e-mail se vi sono errori critici // error_log($err, 3, "/usr/local/php4/error.log"); // // if ($errno == E_USER_ERROR) { // mail("phpdev@example.com", "Critical User Error", $err); // } // } function distance($vect1, $vect2) { if (!is_array($vect1) || !is_array($vect2)) { trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR); return NULL; } if (count($vect1) != count($vect2)) { trigger_error("Vectors need to be of the same size", E_USER_ERROR); return NULL; } for ($i=0; $i<count($vect1); $i++) { $c1 = $vect1[$i]; $c2 = $vect2[$i]; $d = 0.0; if (!is_numeric($c1)) { trigger_error("Coordinate $i in vector 1 is not a number, using zero", E_USER_WARNING); $c1 = 0.0; } if (!is_numeric($c2)) { trigger_error("Coordinate $i in vector 2 is not a number, using zero", E_USER_WARNING); $c2 = 0.0; } $d += $c2*$c2 - $c1*$c1; } return sqrt($d); } $old_error_handler = set_error_handler("userErrorHandler"); // variabile non definita, genera un warning $t = I_AM_NOT_DEFINED; // definisce dei vettori $a = array(2, 3, "foo"); $b = array(5.5, 4.3, -1.6); $c = array(1, -3); // genera un errore utente $t1 = distance($c, $b) . "\n"; // un'altro errore utente $t2 = distance($b, "i am not an array") . "\n"; // genera un warning $t3 = distance($a, $b) . "\n"; print_r($t1); var_dump($t1); print_r($t2); var_dump($t2); print_r($t3); ?>

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
5.4.210.0090.05012.43
5.4.200.0140.06512.41
5.4.190.0250.08412.41
5.4.180.0140.05012.41
5.4.170.0150.07912.42
5.4.160.0230.06812.41
5.4.150.0220.06812.41
5.4.140.0200.05412.10
5.4.130.0140.04712.08
5.4.120.0130.04312.05
5.4.110.0210.06012.04
5.4.100.0130.04212.04
5.4.90.0150.04712.04
5.4.80.0620.04512.04
5.4.70.0120.04712.04
5.4.60.0160.05712.04
5.4.50.0200.06912.04
5.4.40.0210.06812.03
5.4.30.0260.06512.02
5.4.20.0240.06612.02
5.4.10.0210.07112.02
5.4.00.0290.07611.52
5.3.270.0130.04512.72
5.3.260.0280.07112.72
5.3.250.0340.07712.72
5.3.240.0340.07912.72
5.3.230.0450.09612.71
5.3.220.0240.08512.69
5.3.210.0200.07712.69
5.3.200.0210.06812.68
5.3.190.0130.04812.68
5.3.180.0150.06112.68
5.3.170.0230.06812.68
5.3.160.0160.04512.68
5.3.150.0130.04712.68
5.3.140.0260.06412.67
5.3.130.0270.06612.66
5.3.120.0210.07212.66
5.3.110.0260.06512.66
5.3.100.0210.07012.15
5.3.90.0120.04712.13
5.3.80.0230.06712.11
5.3.70.0220.06712.12
5.3.60.0220.06712.10
5.3.50.0180.05512.05
5.3.40.0200.07012.05
5.3.30.0160.04012.01
5.3.20.0220.06611.79
5.3.10.0170.07111.76
5.3.00.0210.06711.74

preferences:
142.4 ms | 1386 KiB | 7 Q