1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/inhere-php-queue

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Реализация очередей в PHP

В PHP для работы с очередями используется обёртка, которая по умолчанию поддерживает три уровня операций с очередью: высокий (high), средний (norm) и низкий (low).

  • DbQueue — реализация очереди на основе базы данных (MySQL или SQLite).
  • PhpQueue — реализация на основе SplQueue PHP.
  • RedisQueue — реализация на базе Redis, операции обладают атомарностью, проблем с параллельными операциями не возникает.
  • ShmQueue — реализация с использованием разделяемой памяти, операции автоматически блокируются, проблем с параллельными операциями нет.
  • SysVQueue — реализация на основе системного вызова System V Message Queue в nix-системах. В PHP требуется включить опцию `--enable-sysvmsg*, обычно она включена по умолчанию. :)

Установка

  1. Через Composer:
{
    "require": {
        "inhere/queue": "dev-master"
    }
}
  1. Прямой клонинг:
git clone https://gitee.com/inhere/php-queue.git // gitee
git clone https://github.com/inhere/php-queue.git // github

Использование

// file: example/queue.php
use Inhere\Queue\QueueInterface;

// require __DIR__ . '/autoload.php';

$q = \Inhere\Queue\Queue::make([
    'driver' => 'sysv', // shm sysv php
    'id' => 12,
]);
//var_dump($q);

$q->push('n1');
$q->push('n2');
$q->push(['n3-array-value']);
$q->push('h1', QueueInterface::PRIORITY_HIGH);
$q->push('l1', QueueInterface:PRIORITY_LOW);
$q->push('n4');

$i = 6;

while ($i--) {
    var_dump($q->pop());
    usleep(50000);
}

Запустите php example/queue.php. Вывод:

% php example/queue.php                                                                                                                                                     17-06-11 - 22:36:01
driver is sysv
string(2) "h1"
string(2) "n1"
string(2) "n2"
array(1) {
  [0] =>
  string(11) "n3-array-value"
}
string(2) "n4"
string(2) "l1"

Прочее

Просмотр системной памяти System V:

ipcs
ipcs -a // 命令可以查看当前使用的共享内存、消息队列及信号量所有信息
ipcs -p // 命令可以得到与共享内存、消息队чую相关进程之间的消息
ipcs -u // 命令可以查看各个资源的使用总结信息
ipcs -q // 只查看消息队列
ipcs -qa // 查看消息队列,并显示更多信息

Удаление общей памяти:

$ ipcrm

usage: ipcrm [-q msqid] [-m shmid] [-s semid]
             [-Q msgkey] [-M shmkey] [-S semkey] ...

Лицензия

MIT

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализация и использование очереди в PHP включают поддержку по умолчанию трёх уровней операций с очередью: высокого (high), среднего (norm) и низкого (low). Расширить Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/inhere-php-queue.git
git@gitlife.ru:oschina-mirror/inhere-php-queue.git
oschina-mirror
inhere-php-queue
inhere-php-queue
master