3v4l.org

run code in 500+ PHP versions simultaneously
<?php if ( ! defined( 'ABSPATH' ) ) exit; add_action('parse_request', function($wp) { if (isset($_GET['debug_rewrite'])) { echo '<pre>'; echo 'matched_rule: ' . $wp->matched_rule . "\n"; echo 'matched_query: ' . $wp->matched_query . "\n"; echo 'query_vars: '; print_r($wp->query_vars); echo '</pre>'; die(); } }); function orbit_crm_add_rewrite_rules() { add_rewrite_rule( '^crm/?$', 'index.php?orbit_crm_page=dashboard', 'top' ); add_rewrite_rule( '^crm/login/?$', 'index.php?orbit_crm_page=login', 'top' ); add_rewrite_rule( '^crm/logout/?$', 'index.php?orbit_crm_page=logout', 'top' ); add_rewrite_rule( '^crm/reparaties/nieuw/?$', 'index.php?orbit_crm_page=reparaties/nieuw','top' ); add_rewrite_rule( '^crm/reparaties/([0-9]+)/werkbon/?$', 'index.php?orbit_crm_page=werkbon&orbit_rep_id=$matches[1]','top' ); add_rewrite_rule( '^crm/reparaties/([0-9]+)/?$', 'index.php?orbit_crm_page=detail&orbit_rep_id=$matches[1]','top' ); add_rewrite_rule( '^crm/reparaties/?$', 'index.php?orbit_crm_page=reparaties', 'top' ); add_rewrite_rule( '^crm/klanten/?$', 'index.php?orbit_crm_page=klanten', 'top' ); add_rewrite_rule( '^crm/kassa/factuur/?$', 'index.php?orbit_crm_page=kassa-factuur', 'top' ); add_rewrite_rule( '^crm/kassa/?$', 'index.php?orbit_crm_page=kassa', 'top' ); add_rewrite_rule( '^crm/producten/?$', 'index.php?orbit_crm_page=producten', 'top' ); add_rewrite_rule( '^crm/financieel/?$', 'index.php?orbit_crm_page=financieel', 'top' ); add_rewrite_rule( '^crm/voorraad/?$', 'index.php?orbit_crm_page=voorraad', 'top' ); add_rewrite_rule( '^crm/facturen/?$', 'index.php?orbit_crm_page=facturen', 'top' ); add_rewrite_rule( '^crm/bestellingen/?$', 'index.php?orbit_crm_page=bestellingen', 'top' ); add_rewrite_rule( '^crm/werkplaats/?$', 'index.php?orbit_crm_page=werkplaats', 'top' ); add_rewrite_rule( '^crm/medewerkers/?$', 'index.php?orbit_crm_page=medewerkers', 'top' ); add_rewrite_rule( '^crm/pin-reset/?$', 'index.php?orbit_crm_page=pin-reset', 'top' ); add_rewrite_rule( '^crm/pin-login/?$', 'index.php?orbit_crm_page=pin-login', 'top' ); add_rewrite_rule( '^crm/pin-logout/?$', 'index.php?orbit_crm_page=pin-logout', 'top' ); add_rewrite_rule( '^crm/pin-wissel/?$', 'index.php?orbit_crm_page=pin-wissel', 'top' ); add_rewrite_rule( '^crm/takenbord/?$', 'index.php?orbit_crm_page=takenbord', 'top' ); add_rewrite_rule( '^crm/agenda/?$', 'index.php?orbit_crm_page=agenda', 'top' ); add_rewrite_rule( '^crm/offertes/([0-9]+)/?$', 'index.php?orbit_crm_page=offerte-detail&orbit_rep_id=$matches[1]', 'top' ); add_rewrite_rule( '^crm/offertes/?$', 'index.php?orbit_crm_page=offertes', 'top' ); add_rewrite_rule( '^crm/tijdregistratie/?$', 'index.php?orbit_uren=1', 'top' ); add_rewrite_rule( '^offerte/?$', 'index.php?orbit_offerte=1', 'top' ); add_rewrite_rule( '^status/?$', 'index.php?orbit_status=1', 'top' ); add_rewrite_rule( '^scan/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^s/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^qr/([a-zA-Z0-9]+)/?$', 'index.php?orbit_scan_id=$matches[1]', 'top' ); add_rewrite_rule( '^crm/(.+)/?$', 'index.php?orbit_crm_page=$matches[1]', 'top' ); } add_filter( 'query_vars', function( $vars ) { $vars[] = 'orbit_crm_page'; $vars[] = 'orbit_rep_id'; $vars[] = 'orbit_uren'; $vars[] = 'orbit_status'; $vars[] = 'orbit_offerte'; $vars[] = 'orbit_scan_id'; return $vars; }); add_action( 'init', function() { orbit_crm_add_rewrite_rules(); add_rewrite_tag( '%orbit_crm_page%', '([^&]+)' ); add_rewrite_tag( '%orbit_rep_id%', '([0-9]+)' ); add_rewrite_tag( '%orbit_status%', '([0-9]+)' ); add_rewrite_tag( '%orbit_scan_id%', '([a-zA-Z0-9]+)' ); if ( get_option('orbit_crm_rewrite_version') !== '3.1' ) { flush_rewrite_rules(); update_option('orbit_crm_rewrite_version', '3.1'); } }); // Scan pagina (publiek, mobiel) add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_scan_id') ) { $tpl = ORBIT_CRM_PATH . 'templates/scan.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 5 ); // Publieke offerte pagina add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_offerte') ) { $tpl = ORBIT_CRM_PATH . 'templates/offerte-publiek.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 8 ); // Status pagina (publiek) add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_status') ) { $tpl = ORBIT_CRM_PATH . 'templates/status.php'; if ( file_exists($tpl) ) return $tpl; } return $template; }, 9 ); // Laad de juiste template voor CRM pagina's add_filter( 'template_include', function( $template ) { if ( get_query_var('orbit_uren') ) { $tpl = ORBIT_CRM_PATH . 'templates/uren.php'; if ( file_exists($tpl) ) return $tpl; } $page = get_query_var( 'orbit_crm_page' ); if ( $page === '' ) return $template; if ( class_exists('\Bricks\Theme') ) { remove_filter( 'template_include', [ '\Bricks\Theme', 'set_template' ], 99 ); remove_filter( 'template_include', [ '\Bricks\Frontend', 'set_template' ], 99 ); } if ( $page === 'logout' ) { wp_logout(); wp_redirect( home_url( '/crm/login' ) ); exit; } if ( $page === 'pin-logout' ) { wp_logout(); wp_redirect( home_url( '/crm/pin-login' ) ); exit; } if ( $page === 'pin-wissel' ) { global $wpdb; $mw_id = intval( $_GET['mw'] ?? 0 ); $token = sanitize_text_field( $_GET['token'] ?? '' ); $debug = []; if ( $mw_id && $token ) { $opgeslagen = get_transient( 'orbit_wissel_token_' . $mw_id ); $debug['opgeslagen'] = $opgeslagen ? 'ja' : 'nee'; $debug['match'] = $opgeslagen && hash_equals($opgeslagen, $token) ? 'ja' : 'nee'; if ( $opgeslagen && hash_equals( $opgeslagen, $token ) ) { delete_transient( 'orbit_wissel_token_' . $mw_id ); $mw = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}orbit_medewerkers WHERE id = %d AND actief = 1", $mw_id ) ); $debug['mw_gevonden'] = $mw ? 'ja: ' . $mw->naam : 'nee'; if ( $mw ) { wp_logout(); wp_clear_auth_cookie(); wp_set_current_user( $mw->wp_user_id ); wp_set_auth_cookie( $mw->wp_user_id, true ); do_action( 'wp_login', $mw->wp_user_naam ?? '', get_userdata($mw->wp_user_id) ); $locaties = explode( ',', $mw->locaties ); $eerste = trim( $locaties[0] ?? 'Elst' ); if ( $eerste === 'Beide' ) $eerste = 'Elst'; update_user_meta( $mw->wp_user_id, 'orbit_actieve_locatie', $eerste ); $debug['cookie_gezet'] = 'ja voor user_id=' . $mw->wp_user_id; } } } // Tijdelijk debug output if (isset($_GET['debug'])) { die(json_encode($debug)); } wp_redirect( home_url( '/crm' ) ); exit; } if ( ! is_user_logged_in() || ! current_user_can( 'orbit_crm_access' ) ) { if ( $page === 'pin-login' ) return ORBIT_CRM_PATH . 'templates/pin-login.php'; if ( $page === 'pin-reset' ) return ORBIT_CRM_PATH . 'templates/pin-reset.php'; if ( $page === 'login' ) return ORBIT_CRM_PATH . 'templates/login.php'; global $wpdb; $tabel_bestaat = $wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}orbit_medewerkers'"); $heeft_mw = $tabel_bestaat ? $wpdb->get_var("SELECT COUNT(*) FROM {$wpdb->prefix}orbit_medewerkers WHERE actief = 1") : 0; wp_redirect( $heeft_mw > 0 ? home_url('/crm/pin-login') : home_url('/crm/login') ); exit; } $safe_page = str_replace(['..', '//'], '', $page); $rep_id = intval( get_query_var('orbit_rep_id') ); error_log('ORBIT safe_page=' . $safe_page . ' rep_id=' . $rep_id); if ( $safe_page === 'detail' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/reparaties/detail.php'; if ( file_exists($tpl) ) return $tpl; } if ( $safe_page === 'werkbon' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/reparaties/werkbon.php'; if ( file_exists($tpl) ) return $tpl; } if ( $safe_page === 'offerte-detail' && $rep_id ) { $tpl = ORBIT_CRM_PATH . 'templates/offertes/detail.php'; if ( file_exists($tpl) ) return $tpl; } $known = [ 'dashboard' => 'dashboard.php', 'reparaties' => 'reparaties.php', 'reparaties/nieuw' => 'reparaties/nieuw.php', 'klanten' => 'klanten.php', 'kassa' => 'kassa.php', 'kassa-factuur' => 'kassa-factuur.php', 'producten' => 'producten.php', 'financieel' => 'financieel.php', 'facturen' => 'facturen.php', 'bestellingen' => 'bestellingen.php', 'werkplaats' => 'werkplaats.php', 'agenda' => 'agenda.php', 'offertes' => 'offertes.php', 'uren' => 'uren.php', 'medewerkers' => 'medewerkers.php', 'takenbord' => 'takenbord.php', 'pin-reset' => 'pin-reset.php', 'pin-login' => 'pin-login.php', ]; if ( isset($known[$safe_page]) ) { $tpl = ORBIT_CRM_PATH . 'templates/' . $known[$safe_page]; if ( $safe_page === 'kassa-factuur' ) { error_log('ORBIT kassa-factuur tpl=' . $tpl . ' exists=' . (file_exists($tpl)?'ja':'nee')); } if ( file_exists($tpl) ) return $tpl; } $tpl = ORBIT_CRM_PATH . 'templates/' . $safe_page . '.php'; if ( file_exists($tpl) ) return $tpl; return ORBIT_CRM_PATH . 'templates/dashboard.php'; });

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)
8.5.80.0260.00816.53
8.5.70.0240.00616.61
8.5.60.0320.00816.93
8.5.50.0240.00216.52
8.5.40.0240.00416.63
8.5.30.0220.00716.71
8.5.20.0150.00616.70
8.5.10.0240.00716.39
8.5.00.0040.00416.89
8.4.230.0210.00919.23
8.4.220.0140.01019.41
8.4.210.0180.00519.60
8.4.200.0130.00519.72
8.4.190.0200.00319.46
8.4.180.0140.00619.60
8.4.170.0160.00419.61
8.4.160.0220.00719.71
8.4.150.0240.01019.55
8.4.140.0210.00517.50
8.4.130.0160.00617.58
8.4.120.0160.00417.77
8.4.110.0190.00417.95
8.4.100.0140.00717.65
8.4.90.0150.00517.82
8.4.80.0150.00417.75
8.4.70.0200.00417.89
8.4.60.0180.00917.61
8.4.50.0220.00817.99
8.4.40.0150.00417.94
8.4.30.0170.00417.51
8.4.20.0190.00317.77
8.4.10.0130.00717.71
8.3.320.0050.00518.89
8.3.310.0150.00618.30
8.3.300.0160.00318.47
8.3.290.0130.00618.72
8.3.280.0210.00118.16
8.3.270.0130.00616.88
8.3.260.0130.00516.73
8.3.250.0180.00716.61
8.3.240.0150.00416.80
8.3.230.0140.00516.79
8.3.220.0230.00516.77
8.3.210.0200.00416.64
8.3.200.0150.00617.07
8.3.190.0140.00517.06
8.3.180.0180.00316.74
8.3.170.0250.00916.63
8.3.160.0290.00816.61
8.3.150.0190.00616.58
8.3.140.0160.00316.52
8.3.130.0140.00316.55
8.3.120.0140.00416.59
8.3.110.0150.00316.82
8.3.100.0170.00416.77
8.3.90.0160.00316.71
8.3.80.0160.00316.84
8.3.70.0150.00516.71
8.3.60.0170.00416.59
8.3.50.0170.00516.80
8.3.40.0170.00418.09
8.3.30.0090.00718.09
8.3.20.0130.00317.80
8.3.10.0150.00118.01
8.3.00.0130.00317.92
8.2.320.0130.00618.07
8.2.310.0180.00118.32

preferences:
55.91 ms | 758 KiB | 5 Q