/usr/share/php/Horde/Queue/Storage/Db.php is in php-horde-queue 1.1.5-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | <?php
/**
* Stores queue tasks in a database table.
*/
class Horde_Queue_Storage_Db extends Horde_Queue_Storage
{
/**
* @var Horde_Db_Adapter
*/
protected $_db;
/**
* @var queue
*/
protected $_queue;
/**
* @param Horde_Db_Adapter $db The DB interface to use
* @param string $queue Optional: Use a separate queue
*/
public function __construct(Horde_Db_Adapter $db, $queue = 'default')
{
$this->_db = $db;
$this->setQueue($queue);
}
/**
*
* @param string $queue The name of the queue to add/remove tasks
*/
public function setQueue($queue = 'default')
{
$this->_queue = $queue;
}
/**
* Serialize a task to the database
* @param Horde_Queue_Task $task A task to serialize
* @throws Horde_Queue_Exception
*/
public function add(Horde_Queue_Task $task)
{
$values = array($this->_queue, serialize($task));
$query = 'INSERT INTO horde_queue_tasks (task_queue, task_fields) VALUES(?, ?)';
try {
$this->_db->insert($query, $values);
} catch (Horde_Db_Exception $e) {
throw new Horde_Queue_Exception($e);
}
}
public function getMany($num = 50)
{
$tasks = array();
$values = array();
$query = 'SELECT * FROM horde_queue_tasks where task_queue = ? ORDER BY task_id LIMIT ?';
$values[] = $this->_queue;
$values[] = $num;
try {
$rows = $this->_db->select($query, $values);
} catch (Horde_Db_Exception $e) {
throw new Horde_Queue_Exception($e);
}
$query = 'DELETE FROM horde_queue_tasks WHERE task_id = ?';
foreach ($rows as $row) {
$tasks[] = unserialize($row['task_fields']);
// TODO: Evaluate if a single call for all IDs is faster for
// various scenarios
try {
$this->_db->delete($query, array($row['task_id']));
} catch (Horde_Db_Exception $e) {
throw new Horde_Queue_Exception($e);
}
}
return $tasks;
}
}
|