| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <?php
- namespace Pheanstalk\Contract;
- use Pheanstalk\Job;
- interface PheanstalkInterface
- {
- const DEFAULT_PORT = 11300;
- const DEFAULT_DELAY = 0; // no delay
- const DEFAULT_PRIORITY = 1024; // most urgent: 0, least urgent: 4294967295
- const DEFAULT_TTR = 60; // 1 minute
- const DEFAULT_TUBE = 'default';
- // ----------------------------------------
- /**
- * Puts a job into a 'buried' state, revived only by 'kick' command.
- */
- public function bury(JobIdInterface $job, int $priority = self::DEFAULT_PRIORITY): void;
- /**
- * Permanently deletes a job.
- */
- public function delete(JobIdInterface $job): void;
- /**
- * Remove the specified tube from the watchlist.
- *
- * Does not execute an IGNORE command if the specified tube is not in the
- * cached watchlist.
- *
- * @param string $tube
- *
- * @return $this
- */
- public function ignore(string $tube): self;
- /**
- * Kicks buried or delayed jobs into a 'ready' state.
- * If there are buried jobs, it will kick up to $max of them.
- * Otherwise, it will kick up to $max delayed jobs.
- *
- * @param int $max The maximum jobs to kick
- *
- * @return int Number of jobs kicked
- */
- public function kick(int $max): int;
- /**
- * A variant of kick that operates with a single job. If the given job
- * exists and is in a buried or delayed state, it will be moved to the
- * ready queue of the the same tube where it currently belongs.
- */
- public function kickJob(JobIdInterface $job): void;
- /**
- * The names of all tubes on the server.
- *
- * @return string[]
- */
- public function listTubes(): array;
- /**
- * The names of the tubes being watched, to reserve jobs from.
- *
- * Returns the cached watchlist if $askServer is false (the default),
- * or queries the server for the watchlist if $askServer is true.
- *
- * @param bool $askServer
- *
- * @return string[]
- */
- public function listTubesWatched(bool $askServer = false): array;
- /**
- * The name of the current tube used for publishing jobs to.
- *
- * Returns the cached value if $askServer is false (the default),
- * or queries the server for the currently used tube if $askServer
- * is true.
- */
- public function listTubeUsed(bool $askServer = false): string;
- /**
- * Temporarily prevent jobs being reserved from the given tube.
- *
- * @param string $tube The tube to pause
- * @param int $delay Seconds before jobs may be reserved from this queue.
- */
- public function pauseTube(string $tube, int $delay): void;
- /**
- * Resume jobs for a given paused tube.
- * @param string $tube The tube to resume
- */
- public function resumeTube(string $tube): void;
- /**
- * Inspect a job in the system, regardless of what tube it is in.
- */
- public function peek(JobIdInterface $job): Job;
- /**
- * Inspect the next ready job in the currently used tube.
- */
- public function peekReady(): ?Job;
- /**
- * Inspect the shortest-remaining-delayed job in the currently used tube.
- * @return ?Job
- */
- public function peekDelayed(): ?Job;
- /**
- * Inspect the next job in the list of buried jobs in the currently used tube.
- */
- public function peekBuried(): ?Job;
- /**
- * Puts a job on the queue.
- *
- * @param string $data The job data
- * @param int $priority From 0 (most urgent) to 0xFFFFFFFF (least urgent)
- * @param int $delay Seconds to wait before job becomes ready
- * @param int $ttr Time To Run: seconds a job can be reserved for
- */
- public function put(
- string $data,
- int $priority = self::DEFAULT_PRIORITY,
- int $delay = self::DEFAULT_DELAY,
- int $ttr = self::DEFAULT_TTR
- ): Job;
- /**
- * Puts a reserved job back into the ready queue.
- *
- * Marks the jobs state as "ready" to be run by any client.
- * It is normally used when the job fails because of a transitory error.
- *
- * @param JobIdInterface $job
- * @param int $priority From 0 (most urgent) to 0xFFFFFFFF (least urgent)
- * @param int $delay Seconds to wait before job becomes ready
- */
- public function release(
- JobIdInterface $job,
- int $priority = self::DEFAULT_PRIORITY,
- int $delay = self::DEFAULT_DELAY
- ): void;
- /**
- * Reserves/locks a ready job in a watched tube.
- */
- public function reserve(): ?Job;
- /**
- * Reserves/locks a ready job in a watched tube, uses the 'reserve-with-timeout' instead of 'reserve'.
- *
- * A timeout value of 0 will cause the server to immediately return either a
- * response or TIMED_OUT. A positive value of timeout will limit the amount of
- * time the client will block on the reserve request until a job becomes
- * available.
- */
- public function reserveWithTimeout(int $timeout): ?Job;
- /**
- * Gives statistical information about the specified job if it exists.
- */
- public function statsJob(JobIdInterface $job): ResponseInterface;
- /**
- * Gives statistical information about the specified tube if it exists.
- */
- public function statsTube(string $tube): ResponseInterface;
- /**
- * Gives statistical information about the beanstalkd system as a whole.
- */
- public function stats(): ResponseInterface;
- /**
- * Allows a worker to request more time to work on a job.
- *
- * This is useful for jobs that potentially take a long time, but you still want
- * the benefits of a TTR pulling a job away from an unresponsive worker. A worker
- * may periodically tell the server that it's still alive and processing a job
- * (e.g. it may do this on DEADLINE_SOON).
- *
- */
- public function touch(JobIdInterface $job): void;
- /**
- * Change to the specified tube name for publishing jobs to.
- * This method would be called 'use' if it were not a PHP reserved word.
- *
- * Does not execute a USE command if the client is already using the
- * specified tube.
- *
- * @param string $tube
- *
- * @return $this
- */
- public function useTube(string $tube): self;
- /**
- * Add the specified tube to the watchlist, to reserve jobs from.
- *
- * Does not execute a WATCH command if the client is already watching the
- * specified tube.
- *
- * @param string $tube
- *
- * @return $this
- */
- public function watch(string $tube): self;
- /**
- * Adds the specified tube to the watchlist, to reserve jobs from, and
- * ignores any other tubes remaining on the watchlist.
- *
- * @param string $tube
- *
- * @return $this
- */
- public function watchOnly(string $tube): self;
- }
|