From b6c457247052c36a60c4d3b53c2256db22a8a62c Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Fri, 8 Jun 2018 11:55:02 +0200 Subject: update to 4.0.2 open https://github.com/phpredis/phpredis/pull/1365 use PHP_BINARY instead of php and allow override report https://github.com/phpredis/phpredis/issues/1364 missing files in pecl archive add new redis.session.lock* options in provided configuration --- 1365.patch | 66 ++++++++++++++++++++++++++++++++++++++ REFLECTION | 32 ++++++++++++++----- getSessionData.php | 22 +++++++++++++ php-pecl-redis4.spec | 31 ++++++++++++++---- regenerateSessionId.php | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ startSession.php | 41 ++++++++++++++++++++++++ 6 files changed, 263 insertions(+), 13 deletions(-) create mode 100644 1365.patch create mode 100644 getSessionData.php create mode 100644 regenerateSessionId.php create mode 100644 startSession.php diff --git a/1365.patch b/1365.patch new file mode 100644 index 0000000..b84586f --- /dev/null +++ b/1365.patch @@ -0,0 +1,66 @@ +From edab489323b587e414564b6417cbb15d7d1b90aa Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Fri, 8 Jun 2018 10:46:04 +0200 +Subject: [PATCH] use PHP_BINARY instead of php and allow override + +--- + tests/RedisTest.php | 10 ++++++---- + tests/TestRedis.php | 2 ++ + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/tests/RedisTest.php b/tests/RedisTest.php +index ff0b7537..efb25f2e 100644 +--- a/tests/RedisTest.php ++++ b/tests/RedisTest.php +@@ -5550,6 +5550,7 @@ private function startSessionProcess($sessionId, $sleepTime, $background, $maxEx + $this->markTestSkipped(); + return true; + } else { ++ $phpcmd = (getenv("PHPCMD") ?: PHP_BINARY); + $commandParameters = array($this->getFullHostPath(), $this->sessionSaveHandler, $sessionId, $sleepTime, $maxExecutionTime, $lock_retries, $lock_expires, $sessionData, $sessionLifetime); + if ($locking_enabled) { + $commandParameters[] = '1'; +@@ -5560,9 +5561,8 @@ private function startSessionProcess($sessionId, $sleepTime, $background, $maxEx + } + $commandParameters = array_map('escapeshellarg', $commandParameters); + +- $command = 'php ' . __DIR__ . '/startSession.php ' . implode(' ', $commandParameters); ++ $command = "$phpcmd " . __DIR__ . '/startSession.php ' . implode(' ', $commandParameters); + $command .= $background ? ' 2>/dev/null > /dev/null &' : ' 2>&1'; +- + exec($command, $output); + return ($background || (count($output) == 1 && $output[0] == 'SUCCESS')) ? true : false; + } +@@ -5576,7 +5576,8 @@ private function startSessionProcess($sessionId, $sleepTime, $background, $maxEx + */ + private function getSessionData($sessionId, $sessionLifetime = 1440) + { +- $command = 'php ' . __DIR__ . '/getSessionData.php ' . escapeshellarg($this->getFullHostPath()) . ' ' . $this->sessionSaveHandler . ' ' . escapeshellarg($sessionId) . ' ' . escapeshellarg($sessionLifetime); ++ $phpcmd = (getenv("PHPCMD") ?: PHP_BINARY); ++ $command = "$phpcmd " . __DIR__ . '/getSessionData.php ' . escapeshellarg($this->getFullHostPath()) . ' ' . $this->sessionSaveHandler . ' ' . escapeshellarg($sessionId) . ' ' . escapeshellarg($sessionLifetime); + exec($command, $output); + + return $output[0]; +@@ -5594,7 +5595,8 @@ private function regenerateSessionId($sessionId, $locking = false, $destroyPrevi + { + $args = array_map('escapeshellarg', array($sessionId, $locking, $destroyPrevious, $sessionProxy)); + +- $command = 'php --no-php-ini --define extension=igbinary.so --define extension=' . __DIR__ . '/../modules/redis.so ' . __DIR__ . '/regenerateSessionId.php ' . escapeshellarg($this->getFullHostPath()) . ' ' . $this->sessionSaveHandler . ' ' . implode(' ', $args); ++ $phpcmd = (getenv("PHPCMD") ?: PHP_BINARY . ' --no-php-ini --define extension=igbinary.so --define extension=' . __DIR__ . '/../modules/redis.so'); ++ $command = "$phpcmd " . __DIR__ . '/regenerateSessionId.php ' . escapeshellarg($this->getFullHostPath()) . ' ' . $this->sessionSaveHandler . ' ' . implode(' ', $args); + + exec($command, $output); + +diff --git a/tests/TestRedis.php b/tests/TestRedis.php +index 4348c7d8..7107669e 100644 +--- a/tests/TestRedis.php ++++ b/tests/TestRedis.php +@@ -35,6 +35,8 @@ + /* Let the user know this can take a bit of time */ + echo "Note: these tests might take up to a minute. Don't worry :-)\n"; + echo "Using PHP version " . PHP_VERSION . " (" . (PHP_INT_SIZE*8) . " bits)\n"; ++$phpcmd = (getenv("PHPCMD") ?: PHP_BINARY); ++echo "Using PHP command: $phpcmd\n"; + + /* Depending on the classes being tested, run our tests on it */ + echo "Testing class "; diff --git a/REFLECTION b/REFLECTION index 5a93cf5..176fbbf 100644 --- a/REFLECTION +++ b/REFLECTION @@ -1,4 +1,4 @@ -Extension [ extension #191 redis version 4.0.2 ] { +Extension [ extension #192 redis version 4.1.0RC1 ] { - Dependencies { Dependency [ igbinary (Required) ] @@ -53,6 +53,18 @@ Extension [ extension #191 redis version 4.0.2 ] { Entry [ redis.clusters.timeout ] Current = '' } + Entry [ redis.session.locking_enabled ] + Current = '' + } + Entry [ redis.session.lock_expire ] + Current = '' + } + Entry [ redis.session.lock_retries ] + Current = '' + } + Entry [ redis.session.lock_wait_time ] + Current = '' + } } - Classes [5] { @@ -353,13 +365,15 @@ Extension [ extension #191 redis version 4.0.2 ] { Method [ public method flushAll ] { - - Parameters [0] { + - Parameters [1] { + Parameter #0 [ $async ] } } Method [ public method flushDB ] { - - Parameters [0] { + - Parameters [1] { + Parameter #0 [ $async ] } } @@ -1933,13 +1947,15 @@ Extension [ extension #191 redis version 4.0.2 ] { Method [ public method flushall ] { - - Parameters [0] { + - Parameters [1] { + Parameter #0 [ $async ] } } Method [ public method flushdb ] { - - Parameters [0] { + - Parameters [1] { + Parameter #0 [ $async ] } } @@ -2348,15 +2364,17 @@ Extension [ extension #191 redis version 4.0.2 ] { Method [ public method flushall ] { - - Parameters [1] { + - Parameters [2] { Parameter #0 [ $key_or_address ] + Parameter #1 [ $async ] } } Method [ public method flushdb ] { - - Parameters [1] { + - Parameters [2] { Parameter #0 [ $key_or_address ] + Parameter #1 [ $async ] } } diff --git a/getSessionData.php b/getSessionData.php new file mode 100644 index 0000000..d49256c --- /dev/null +++ b/getSessionData.php @@ -0,0 +1,22 @@ + - 4.0.2-1 - update to 4.0.2 +- open https://github.com/phpredis/phpredis/pull/1365 + use PHP_BINARY instead of php and allow override +- report https://github.com/phpredis/phpredis/issues/1364 + missing files in pecl archive +- add new redis.session.lock* options in provided configuration * Wed Apr 18 2018 Remi Collet - 4.0.1-1 - update to 4.0.1 diff --git a/regenerateSessionId.php b/regenerateSessionId.php new file mode 100644 index 0000000..f0e4c4e --- /dev/null +++ b/regenerateSessionId.php @@ -0,0 +1,84 @@ +handler = new SessionHandler(); + } + + public function close() + { + return $this->handler->close(); + } + + public function destroy($session_id) + { + return $this->handler->destroy($session_id); + } + + public function gc($maxlifetime) + { + return $this->handler->gc($maxlifetime); + } + + public function open($save_path, $name) + { + return $this->handler->open($save_path, $name); + } + + public function read($session_id) + { + return $this->handler->read($session_id); + } + + public function write($session_id, $session_data) + { + return $this->handler->write($session_id, $session_data); + } + } +} + +if ($sessionProxy) { + $handler = new TestHandler(); + session_set_save_handler($handler); +} + +session_id($sessionId); +if (!session_start()) { + $result = "FAILED: session_start()"; +} +elseif (!session_regenerate_id($destroyPrevious)) { + $result = "FAILED: session_regenerate_id()"; +} +else { + $result = session_id(); +} +session_write_close(); +echo $result; + diff --git a/startSession.php b/startSession.php new file mode 100644 index 0000000..2149da6 --- /dev/null +++ b/startSession.php @@ -0,0 +1,41 @@ +