Ich baue Chat-Nachrichtensystem lange Umfrage verwenden BLPOP. Ich habe Predis PHP verwendet. Wenn ich renne test/get
-> es läuft okie mit 30s Timeout.Brauchen Sie Unterstützung über BLPOP Predis PHP
Während ich test/get
läuft, versuche ich Daten durch test/push
zu schieben, aber es hat ein Problem. Push wird nicht sofort ausgeführt, wenn test/get
nicht beendet ist. test/push
dauert 30s.
Ich benutze Kommandozeile, um Daten zu schieben: RPUSH message:test hello
-> Es führt sofort und sehr schön.
require './vendor/autoload.php';
class Test extends CI_Controller {
public $keyChat = 'message:test';
public function __construct() {
parent::__construct();
}
public function push() {
$redis = new Predis\Client(['host' => 'localhost','port' => 6379]);
$redis->rpush($this->keyChat, 'hello you');
$redis->expire($this->keyChat, 3600);
echo "send message success";
}
public function get() {
$redis = new Predis\Client(['host' => '127.0.0.1','port' => 6379]);
$res = $redis->blpop($this->keyChat, 30);
var_dump($res);
}
}