У меня есть эта PHP функция, которая регистрирует посетителей в файл .txt
(по соображениям безопасности). Он использует API, чтобы получить их местоположение. Он отлично работает на localhost
, но когда он действительно работает, он записывает пустые значения. Я предполагаю, что это потому, что функции запускаются до того, как API успел вернуть данные. Есть ли способ написать что-то вроде Javascript promise
или какую-нибудь асинхронную функцию, которая будет ожидать возврата данных, прежде чем записывать их в журнал?
Это то, что у меня сейчас есть:
function getLocation() {
$query = @unserialize (file_get_contents('http://ip-api.com/php/'));
if ($query && $query['status'] == 'success') {
$user = $_SERVER['REMOTE_ADDR'].' - '.date("H:i:s d-m-Y").' - '.$query['country'].', '.$query['regionName'].', '.$query['city'].', '.$query['zip'];
$file = '../logs/userlog.txt';
$currentFileData = file_get_contents($file);
$currentFileData .= $user . PHP_EOL;
file_put_contents($file, $currentFileData);
}
}
Какой вывод должен быть:
127.0.0.1 - 11:59:33 03-04-2020 - South Africa, Western Cape, Cape Town, 8001
Что такое фактический вывод:
127.0.0.1 - 11:59:33 03-04-2020 - , , ,
Ваша помощь будет в значительной степени оценили!