- Updated README to include supervisor configuration.

- Change logfile date format to `%Y-%m-%d %T`.
- Added return types to more functions.
This commit is contained in:
Daniel Mason 2018-07-16 09:59:58 +12:00
parent f69330d637
commit 4e87677517
10 changed files with 65 additions and 29 deletions

View File

@ -1,3 +1,8 @@
## 1.4.3 (2018-07-16)
- Updated README to include supervisor configuration.
- Change logfile date format to `%Y-%m-%d %T`.
- Added return types to more functions.
## 1.4.2 (2018-05-30) ## 1.4.2 (2018-05-30)
- Reimplemented credis due to issues with Redis: Connection Closed. - Reimplemented credis due to issues with Redis: Connection Closed.
- Updated Docs. - Updated Docs.
@ -14,7 +19,6 @@
- Replaced credis in favour of phpredis. - Replaced credis in favour of phpredis.
- Reformatted codebase to be PSR2 compliant. - Reformatted codebase to be PSR2 compliant.
## 1.3 (2013) ## 1.3 (2013)
**Note:** This release introduces backwards incompatible changes with all previous versions of php-resque. Please see below for details. **Note:** This release introduces backwards incompatible changes with all previous versions of php-resque. Please see below for details.

View File

@ -432,6 +432,30 @@ Called after a job has been queued using the `Resque::enqueue` method. Arguments
* Queue - string containing the name of the queue the job was added to * Queue - string containing the name of the queue the job was added to
* ID - string containing the new token of the enqueued job * ID - string containing the new token of the enqueued job
## Supervisor Configuration ##
You may like to run php-resque on a supervisor task to manage the processes.
The following is a default config that can be modified to suit.
```sh
[program:resque-dev]
directory=/var/www # Project root
command=php vendor/bin/resque
numprocs=2 # Change this value for more threads
environment=LOGLEVEL=NOTICE,QUEUE='*',BLOCKING=1,COUNT=1,APP_INCLUDE='includes/autoload.php',REDIS_BACKEND=127.0.0.1,REDIS_BACKEND_DB=0
redirect_stderr=true # Output stderr to logfile
stdout_logfile=/var/log/resque.log
autostart=true
autorestart=true
stopsignal=QUIT
process_name = %(program_name)s_%(process_num)02d
```
Issues:
- Restarting worker doesn't always make it use updated code, I find on a dev-environment issuing
the following command works well to restart everything.
`sudo /etc/init.d/supervisor force-stop && sleep 1 && sudo /etc/init.d/supervisor restart`
## Step-By-Step ## ## Step-By-Step ##
For a more in-depth look at what php-resque does under the hood (without For a more in-depth look at what php-resque does under the hood (without

View File

@ -1,10 +1,10 @@
{ {
"name": "idanoo/php-resque", "name": "idanoo/php-resque",
"version": "1.4.2", "version": "1.4.3",
"type": "library", "type": "library",
"description": "Redis backed library for creating background jobs and processing them later. Based on resque for Ruby. Originally forked from chrisboulton/php-resque.", "description": "Redis backed library for creating background jobs and processing them later. Based on resque for Ruby. Originally forked from chrisboulton/php-resque.",
"keywords": ["job", "background", "redis", "resque"], "keywords": ["job", "background", "redis", "resque"],
"homepage": "http://www.github.com/iDanoo/php-resque/", "homepage": "http://www.github.com/idanoo/php-resque/",
"license": "MIT", "license": "MIT",
"authors": [ "authors": [
{ {
@ -19,9 +19,6 @@
"psr/log": "~1.0", "psr/log": "~1.0",
"colinmollenhour/credis": "^1.10" "colinmollenhour/credis": "^1.10"
}, },
"suggest": {
"ext-proctitle": "Allows php-resque to rename the title of UNIX processes to show the status of a worker."
},
"require-dev": { "require-dev": {
"phpunit/phpunit": "^6" "phpunit/phpunit": "^6"
}, },
@ -32,5 +29,9 @@
"psr-0": { "psr-0": {
"Resque": "lib" "Resque": "lib"
} }
},
"support": {
"issues": "https://github.com/idanoo/php-resque/issues",
"source": "https://github.com/idanoo/php-resque"
} }
} }

View File

@ -1,4 +1,4 @@
<?php /** @noinspection ALL */ <?php
/** /**
* Base Resque class. * Base Resque class.
@ -10,7 +10,7 @@
class Resque class Resque
{ {
const VERSION = '1.4.2'; const VERSION = '1.4.3';
const DEFAULT_INTERVAL = 5; const DEFAULT_INTERVAL = 5;

View File

@ -124,14 +124,15 @@ class Resque_Job
* *
* @param int $status Status constant from Resque_Job_Status indicating the current status of a job. * @param int $status Status constant from Resque_Job_Status indicating the current status of a job.
*/ */
public function updateStatus($status) public function updateStatus($status): bool
{ {
if (empty($this->payload['id'])) { if (empty($this->payload['id'])) {
return; return false;
} }
$statusInstance = new Resque_Job_Status($this->payload['id']); $statusInstance = new Resque_Job_Status($this->payload['id']);
$statusInstance->update($status); $statusInstance->update($status);
return true;
} }
/** /**

View File

@ -66,7 +66,7 @@ class Resque_Job_Status
* *
* @return boolean True if the status is being monitored, false if not. * @return boolean True if the status is being monitored, false if not.
*/ */
public function isTracking() public function isTracking(): bool
{ {
if ($this->isTracking === false) { if ($this->isTracking === false) {
return false; return false;
@ -137,7 +137,7 @@ class Resque_Job_Status
* *
* @return string String representation of the current job status class. * @return string String representation of the current job status class.
*/ */
public function __toString() public function __toString(): string
{ {
return 'job:' . $this->id . ':status'; return 'job:' . $this->id . ':status';
} }

View File

@ -27,15 +27,25 @@ class Resque_Log extends Psr\Log\AbstractLogger
*/ */
public function log($level, $message, array $context = []) public function log($level, $message, array $context = [])
{ {
$logLevels = ["emergency", "alert", "critical", "error", "warning", "notice", "info", "debug"]; $logLevels = [
"emergency",
"alert",
"critical",
"error",
"warning",
"notice",
"info",
"debug"
];
/** /**
* Only log things with a higher rating than the current log level. * Only log things with a higher level than the current log level.
* e.g If set as 'alert' will only alert for 'emergency' and 'alert' logs. * e.g If set as 'alert' will only alert for 'emergency' and 'alert' logs.
*/ */
if (array_search($level, $logLevels) <= array_search($this->logLevel, $logLevels)) { if (array_search($level, $logLevels) <= array_search($this->logLevel, $logLevels)) {
fwrite( fwrite(
STDOUT, STDOUT,
'[' . $level . '][' . strftime('%T %Y-%m-%d') . '] ' . $this->interpolate($message, $context) . PHP_EOL '[' . $level . '][' . strftime('%Y-%m-%d %T') . '] ' . $this->interpolate($message, $context) . PHP_EOL
); );
} }
return; return;

View File

@ -252,12 +252,12 @@ class Resque_Redis
} }
} }
public static function getPrefix() public static function getPrefix(): string
{ {
return self::$defaultNamespace; return self::$defaultNamespace;
} }
public static function removePrefix($string) public static function removePrefix($string): string
{ {
$prefix = self::getPrefix(); $prefix = self::getPrefix();

View File

@ -16,7 +16,7 @@ class Resque_Stat
* @param string $stat The name of the statistic to get the stats for. * @param string $stat The name of the statistic to get the stats for.
* @return mixed Value of the statistic. * @return mixed Value of the statistic.
*/ */
public static function get($stat) public static function get($stat): int
{ {
return (int)Resque::redis()->get('stat:' . $stat); return (int)Resque::redis()->get('stat:' . $stat);
} }
@ -28,7 +28,7 @@ class Resque_Stat
* @param int $by The amount to increment the statistic by. * @param int $by The amount to increment the statistic by.
* @return boolean True if successful, false if not. * @return boolean True if successful, false if not.
*/ */
public static function incr($stat, $by = 1) public static function incr($stat, $by = 1): bool
{ {
return (bool)Resque::redis()->incrby('stat:' . $stat, $by); return (bool)Resque::redis()->incrby('stat:' . $stat, $by);
} }
@ -40,7 +40,7 @@ class Resque_Stat
* @param int $by The amount to decrement the statistic by. * @param int $by The amount to decrement the statistic by.
* @return boolean True if successful, false if not. * @return boolean True if successful, false if not.
*/ */
public static function decr($stat, $by = 1) public static function decr($stat, $by = 1): bool
{ {
return (bool)Resque::redis()->decrby('stat:' . $stat, $by); return (bool)Resque::redis()->decrby('stat:' . $stat, $by);
} }
@ -51,7 +51,7 @@ class Resque_Stat
* @param string $stat The name of the statistic to delete. * @param string $stat The name of the statistic to delete.
* @return boolean True if successful, false if not. * @return boolean True if successful, false if not.
*/ */
public static function clear($stat) public static function clear($stat): bool
{ {
return (bool)Resque::redis()->del('stat:' . $stat); return (bool)Resque::redis()->del('stat:' . $stat);
} }

View File

@ -82,7 +82,7 @@ class Resque_Worker
* Return all workers known to Resque as instantiated instances. * Return all workers known to Resque as instantiated instances.
* @return array * @return array
*/ */
public static function all() public static function all(): array
{ {
$workers = Resque::redis()->smembers('workers'); $workers = Resque::redis()->smembers('workers');
if (!is_array($workers)) { if (!is_array($workers)) {
@ -103,7 +103,7 @@ class Resque_Worker
* @return boolean True if the worker exists, false if not. * @return boolean True if the worker exists, false if not.
* @throws Resque_RedisException * @throws Resque_RedisException
*/ */
public static function exists($workerId) public static function exists($workerId): bool
{ {
return (bool)Resque::redis()->sismember('workers', $workerId); return (bool)Resque::redis()->sismember('workers', $workerId);
} }
@ -532,14 +532,10 @@ class Resque_Worker
* *
* @return array Array with details of current job. * @return array Array with details of current job.
*/ */
public function job() public function job(): array
{ {
$job = Resque::redis()->get('worker:' . $this); $job = Resque::redis()->get('worker:' . $this);
if (!$job) { return $job ? json_decode($job, true) : [];
return [];
} else {
return json_decode($job, true);
}
} }
/** /**