Доступ к классу Redis за пределами laravel

111
8

Я слушаю сокет устройства трекера, и я создал php-класс в общей папке, и в этом файле я обращаюсь к классу Redis, чтобы опубликовать данные на сервере, но я получаю следующую ошибку:

Stack trace:
#0 C:\xampp\htdocs\www\socket5\public\socket-server.php(38): Illuminate\Support\Facades\Facade::__callStatic('publish', Array)
#1 {main}
thrown in C:\xampp\htdocs\www\socket5\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php on line 218

Fatal error: Uncaught RuntimeException: A facade root has not been set. in C:\xampp\htdocs\www\socket5\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php:
218

Это ошибка, которую я получаю. И это то, что я делаю:

use \Illuminate\Support\Facades\Facade as Facade;
use Illuminate\Support\Facades\Redis;
Redis::publish('test-channel', json_encode($data));

Так я слушаю сокет:

$server = stream_socket_server("tcp://IP_ADDRESS:4000", $errno, $errorMessage);
if ($server === false) {
throw new UnexpectedValueException("Could not bind to socket: $errorMessage");
}
else {
$i = 0;
for (;;) {
if($i == 0) {
$client = @stream_socket_accept($server);
}
if ($client) {
if($i == 0) {
$message= fread($client, 80000);
echo $message;
$response=pack("H*","01");
fwrite($client, $response);
$i++;
}
else {
$message= fread($client, 80000);
$data = $message;
echo $message;
if(trim($message) == "") {
fclose($client);
$i = 0;
}
else {
$hexData = bin2hex($message);
$decoder = new TeltonikaFmParser\TcpDecoder();
$original_data = $decoder->decodeData($hexData);
echo $json_string = json_encode($original_data);
$data = [
'event' => 'UserSignedUp',
'data' => $original_data
];
Redis::publish('test-channel', json_encode($data));
//insertintodatabase($json_string);
fclose($client);
$i = 0;
}

}
}
}
}

Я искал это, но не нашел ничего. Любая помощь будет принята с благодарностью.

Если кто-то может помочь в том, как слушать сокет внутри laravel, это тоже было бы здорово.

спросил(а) 2018-01-24T17:52:00+03:00 2 года, 4 месяца назад
1
Решение
100

Код, который вы указали, не принадлежит к общедоступному каталогу, и его нельзя запускать с помощью веб-сервера, вы должны использовать терминал для его запуска... И я думаю, вы можете сделать это в своей собственной команде ремесленника

Проверка Laravel Artisan Docs

ответил(а) 2018-01-25T15:58:00+03:00 2 года, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема