Общие ресурсы между дочерними потоками PHP - PullRequest
1 голос
/ 22 марта 2012

У меня есть PHP-скрипт, который порождает два дочерних процесса (pcntl_fork ()), каждый из которых вызывает методы одного экземпляра класса (имена классов и методов и их функциональность упрощены для более простого объяснения).

    class Main_Class 
    {

     public $array = array();

     public function push($value) {
      $this->array[] = $value;
     }
     public function pop() {
      return array_shift($this->array);
     }
    }

    $pc = new Thread_Creator();
    $main_class = new Main_Class();

    $pc->fork(array($main_class, 'push'), 1);
    $pc->fork(array($main_class, 'pop'), 1);

    The fork method is executed like so: call_user_func($main_class, 'pushToArray')

Я хотел, чтобы эти процессы совместно использовали одни и те же ресурсы (один процесс помещает информацию в переменную открытого класса типа array, а другой извлекается из нее).В настоящее время оба процесса выполняются одновременно, но только один из них, по-видимому, имеет доступ к переменной класса $ array.

Возможны ли общие ресурсы между отдельными PID?

Есть предложения по решению этой проблемы?(Я хотел бы сохранить процессы раздельными, поскольку я намерен запускать их с разными интервалами)

Если вам нужна дополнительная информация или фрагменты кода, дайте мне знать

1 Ответ

2 голосов
/ 31 марта 2012

Мне удалось использовать общую память для выполнения задачи.Для тех, кто заинтересован, посмотрите здесь:

http://onlamp.com/pub/a/php/2004/05/13/shared_memory.html?page=2

http://www.php.net/manual/en/book.sem.php

...