database->conn); /** * Long polling */ session_write_close(); ignore_user_abort(false); set_time_limit(30); // if ajax request has send a timestamp, then $last_ajax_call = timestamp, else $last_ajax_call = null $last_ajax_call = isset($_GET['timestamp']) ? (int)$_GET['timestamp'] : NULL; // main loop while(TRUE) { $time = $timeMapper->getLatest(); if ($time) { $last_change_in_timetable = $time->date->getTimestamp(); if ($time && $last_ajax_call == NULL || $last_change_in_timetable > $last_ajax_call) { exit(json_encode(["data" => json_encode($timeMapper->getAll()), "timestamp" => $last_change_in_timetable])); } } // PHP caches file data, like requesting the size of a file, by default. clearstatcache() clears that cache clearstatcache(); // wait for 1 sec (not very sexy as this blocks the PHP/Apache process, but that's how it goes) sleep(1); continue; }