Have trulbles with predis library, while trying to import into php file, getting such error: require(project/vendor/predis/predis/autoload.php): Failed to open stream: No such file or directory BTW https://flareapp.io/share/353MNjEP#F49 Any ideas what is wrong?
<?php
namespace App\Http\Controllers;
use predis;
use mysqli;
use Illuminate\Http\Request;
class DataController extends Controller
{
public function getDataFromDatabase()
{
$mysqli = new mysqli('localhost', 'root', '', 'storage');
$result = $mysqli->query("SELECT * FROM ads");
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
return $data;
}
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
require 'project/vendor/predis/predis/autoload.php';
Predis\Autoloader::register();
$redis = new Predis\Client(array(
"scheme" => "tcp",
"host" => "127.0.0.1",
"port" => 6379,
"password" => "",
"persistent" => "1"));
$redis->connect('127.0.0.1', 6379);
$data = $redis->get('data');
if (!$data) {
$data = $this->getDataFromDatabase();
usort($data, function ($a, $b) {
return $b['CPM'] <=> $a['CPM'];
});
$data = $data[0];
$redis->set('data', $data, 60);
}
return view('ads', ['data' => $data['CPM']]);
}
}
.env file:
.env file content : 'Redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'),
'prefix' => env('REDIS_PREFIX', Str::slug(env('APPNAME', 'laravel'), '').'database'),
],
'default' => [
'url' => env('REDIS_URL', '127.0.0.1'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME', 'root'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_DB', 'storage'),
],
'cache' => [
'url' => env('REDIS_URL', '127.0.0.1'),
'host' => env('REDIS_HOST', '127.0.0.1'),
'username' => env('REDIS_USERNAME', 'root'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', '6379'),
'database' => env('REDIS_CACHE_DB', '1'),
],
Trying to import predis library, but getting error
To the best of my knowledge, laravel under the hood already know how to handle connecting to redis through the client you configured. You dont need to manually load predis in your controller. Your invoke method can be like this:
You ll have to do
use Illuminate\Support\Facades\Redis;in your use statement