Поэтому я занимался поиском в Интернете и изучением PHP pthreads3 и тем, как они должны хранить данные. (Вернее, как это не так). Мне кажется, что единственный способ для потока правильно сохранить свои данные – создать новый объект Threaded и отправить его в поток. Затем поток может использовать этот объект Threaded для хранения практически любых данных.
Мой вопрос и самая большая проблема с захватывающими потоками PHP: возможно ли, чтобы поток создал свои собственные объекты хранения, когда он захочет? Я понятия не имею, как и почему, поскольку весь ответ, который я нашел на этом, расплывчатый, продуманный и запутанный «возможно, но нет», в основном связанный с плохой производительностью и проблемами памяти / безопасностью. Кажется, это должно быть возможно, так или иначе:
class someFantasticThread extends Thread { public $someData; function run(){ while(true){ //Create a fresh storage for the new data this iteration $this->someData = new SomeCoolStorage(); // Can this work somehow without all the issues? $this->someData[] = 'amazingdata'; // Do something amazing and store the new results in $someData $this->someData[] = new SomeCoolStorage(); // This would also be desireable, if it can somehow be done //don't mind the obvious loop issues. Imagine this is a well formed loop } } } class SomeCoolStorage extends Threaded{} // Start the thread $threadObj = new someFantasticThread(); $threadObj->start(); while(true){ // at some point, retrieve the data and do something useful with the contained results // doSomethingAwesome($threadObj->someData); }