2015-06-12 5 views
0

У меня есть следующий код, где я пытаюсь присвоить значение массиву в классе, который использует php pthreads безрезультатно - я рассмотрел решения, предлагающие использовать стеки без каких-либо помогло либо:Невозможно присвоить значение массиву с помощью PHP pthreads

<?php 
ini_set('display_errors',1); 
ini_set('display_startup_errors',1); 
error_reporting(E_ALL); 

    class WorkerThreads extends Thread 
     { 
      private $fromlist; 

      public function __construct() 
      { 
        $this->fromlist = array(); 
      } 

      public function run() 
      { 
        $this->fromlist=array("hello"=>1,2); 
        $this->fromlist['hi']="!!!"; 
        $this->fromlist[] = array("ho", 1); 
      } 
     } 

      $workers = new WorkerThreads(); 
      $workers->start(); 
      print_r($workers); 

Я получаю следующие результаты:

WorkerThreads Object 
(
    [fromlist] => Array 
     (
      [hello] => 1 
      [0] => 2 
     ) 

) 

Я ожидал увидеть дополнительные элементы массива - попробуйте, как я могу, я не могу получить его, чтобы добавить больше элементов.

Я проверил синтаксис, и это кажется прекрасным - проблема заключается в том, как использовать массив в pthreads - я не могу понять, как это сделать.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

Или предложите какой-либо код для вышесказанного, чтобы я мог добраться до рабочего решения?

+0

Почему вы делаете 'private $ fromlist = array();' внутри вашего метода '__construct()'?? – Darren

+0

Typo .. во время отладки Я забыл удалить это ... Он все еще не работает - я думаю, что массивы не могут быть сериализуемыми в многопоточности ... –

+1

Возможный дубликат [Класс PHP/pthreads Thread не может использовать массив?] (http://stackoverflow.com/questions/14796674/a-php-pthreads-thread-class-cant-use-array) –

ответ

1

Добавление переменной $ fromlist в функцию run() решает проблему.

Смежные вопросы