У меня есть странное требование, чтобы проверить разницу во времени между каждым запросом и ответом
У меня есть PHP-файл (request.php), служащий изображением в качестве ответа, поэтому я должен проверить разницу во времени между GET request.php и GET image request. для каждого запроса.
Например:
время request.php сделано, скажем, 0:40 утра
это ответит на изображение, когда изображение вставлено в веб-страницу, я получаю запрос изображения, скажем, 12.42 утра.
поэтому мое требование — вычислять разницу во времени между request.php и изображением каждый раз, когда они попадают на мой сервер.
Я предложил прочитать Apache access-log, но клиент хочет, чтобы я записывал время запроса для каждого сделанного запроса и сохранял где-то где-то и вычислял среднее между каждым запросом в конце дня.
Моя идея состоит в том, чтобы прочитать Apache-log, и есть ли способ, которым мы можем написать php-скрипт, который будет работать для каждого входящего запроса и проверять его время, возможно, файл пользовательского журнала доступа.
Любая помощь!!
2: Исходя из вашего вопроса, я понял, что требование состоит в том, чтобы на самом деле получить время, когда изображение, наконец, «появляется» в браузере посетителя?
Если это так, то, ну, это может стать довольно быстрым с технической точки зрения, в зависимости от того, насколько точной должна быть информация, а также, если вы не возражаете против получения упомянутых изображений через XMLHTTpRequest — через JavaScript. Если это так, вы можете сделать все это на стороне сервера в качестве предварительного условия, дополнительно, установить заголовок пользовательского ответа, т.е.
header('x-imageID', $mysql_insert_id());
Затем прочитайте файл (‘blah.jpg’);
на стороне клиента, с XMLHTTpRequest, установленным в onload
событие другой запрос к серверу с идентификатором изображения, например, с xhr.getResponseHeader('x-imageID')
и текущее время в миллисекундах: new Date().getTime()
,
очевидно, вам нужно будет установить некоторую информацию, чтобы различать запросы, чтобы сервер регистрировал только запросы на изображения и обновлял записи с помощью запросов «время обновления».
Надеюсь, поможет 😉
Вы должны использовать обработчик, чтобы иметь возможность подключаться к каждому запросу.
Это может быть сделано довольно легко, но вы должны также обслуживать файлы с вашего php.
Следующие фрагменты кода предполагают следующее:
.htaccess
файлы)mod_rewrite
установлен и включенdocroot
На вашем сервере docroot
папку, создайте эти файлы:
.htaccess
handler.php
.Htaccess
Открой .htaccess
файл в вашем любимом текстовом редакторе, введите следующее и сохраните:
RewriteEngine On
RewriteCond %{REQUEST_URI} !handler.php$
RewriteRule (.*) handler.php
handler.php
Введите следующее в вашем .handler.php
файл и сохранить:
<?
$over = $_SERVER['SERVER_PROTOCOL'];
$path = explode('?',$_SERVER['REQUEST_URI']);
$path = (($path == '/') ? '/home.html');
$extn = array_shift((explode('.',$path)));
$list = # array
[
'html' => 'text/html',
'css' => 'text/css',
'png' => 'image/png',
'js' => 'application/javascript',
];
$type = (isset($mime[$extn]) ? $mime[$extn] : 'text/plain');
if (file_exists(".${path}"))
{
if (is_dir(".${path}") || ($path == '/.htaccess'))
{
header("${over} 403 Forbidden");
echo "path: `$path` is forbidden";
exit;
}
header("${over} 200 OK");
header("Content-Type: ${type}");
header("Content-Length: ".filesize($path));
readfile($path);
exit;
}
header("${over} 404 Not Found");
echo "path: `$path` is undefined";
exit;
?>
С каждым запросом получайте текущий microtime
,
затем подайте файл (получите mime-тип файла, напишите соответствующий заголовок: «Content-type» и просто: readfile('path/to/file.mp3');
* где ‘path / to / file.mp3’, очевидно, будет:
$_SERVER['REQUEST_URI']
или какой-то маршрутизации — как вы хотите.
затем, возьмите микротайм снова, теперь вычтите прежний микровремен из второго, и у вас есть время, необходимое для обработки файла.
Таким образом, после этого теперь вы можете регистрировать каждый запрос в базе данных или в любом месте для каждого запроса, указав соответствующие имена полей.
Я не уверен, сколько деталей требуется, пожалуйста, прокомментируйте соответственно.