Articles of многопоточность

PHP pThreads IIS: неожиданный вывод в браузере

Я пытаюсь запустить php-скрипт многопоточным с использованием PHP pThreads в среде IIS 7 PHP 5.6 x86 (потокобезопасная) среда. Я создал проблему github, но я не слышал назад, и хотя некоторые другие кодеры здесь, возможно, столкнулись с одной и той же проблемой. PHP работает нормально и скрипты, которые не требуют выполнения pThreads, как обычно. Однако, когда […]

Класс Wrapper Thread для функции с переменными аргументами в PHP

Идея здесь заключается в создании класса, который строит с помощью функции и массива параметров и вызовов, которые функционируют в новом потоке. Это мой класс: class FunctionThread extends Thread { public function __construct($fFunction, $aParameters){ $this->fFunction = $fFunction; $this->aParameters = $aParameters; } public function run(){ $this->fFunction($this->aParmeters[0], $this->aParmeters[1], …); } } Очевидно, что функция запуска неверна, что подводит […]

Альтернатива для mysql_insert_id в mysql?

Я google mysql_insert_id, о потоковом обеспечении безопасности … … Я беспокоюсь о том, что у меня есть только один пользователь MySQL для подключения к базе данных, поэтому я думаю, что mysql_insert_id не очень безопасен для моего приложения. Есть ли какой-нибудь «безопасный» метод для возврата последнего идентификатора вставки из MySQL? Спасибо.

PHP – доступ к глобальной переменной во всех php-потоках

Я использую pthreads для своего PHP-приложения. Я хочу, чтобы мои потоки читали / записывали (совместно используют) общую переменную PHP, т. Е. Поддерживали общее состояние переменной для всех потоков в пользовательском сеансе. Я не нашел решения. Пожалуйста, также дайте любой пример сценария с предлагаемым решением.

Как поток PHP хранит свои данные?

Поэтому я занимался поиском в Интернете и изучением PHP pthreads3 и тем, как они должны хранить данные. (Вернее, как это не так). Мне кажется, что единственный способ для потока правильно сохранить свои данные – создать новый объект Threaded и отправить его в поток. Затем поток может использовать этот объект Threaded для хранения практически любых данных. […]

Сериализация «Закрытие» не допускается с помощью php pthreads

Мне нужна небольшая помощь с pthreads в php. У меня есть следующий класс namespace le\Thread; class Thread extends \Thread { protected $method; protected $params; protected $result = null; protected $joined = false; /** * Provide a passthrough to call_user_func_array **/ public function __construct($method, $params) { $this->method = $method; $this->params = $params; } /** * The […]

Многопоточный оператор for для php

Я использую эту следующую функцию, чтобы проверить, существуют ли изображения в их местоположении. Каждый раз, когда скрипт работает, он загружает около 40-50 URL-адресов и поэтому занимает много времени, чтобы загрузить страницу. Я думал об использовании потоков для инструкции «for» (в конце скрипта), но не смог найти много примеров того, как это сделать. Я не очень […]

php – не удается получить доступ к глобальным переменным из Thread?

Я полагаю, что это конкретный вопрос, но по какой-то причине, когда я создаю Thread следующим образом: require_once(__DIR__.'/myotherfile.php'); class StreamBufferInput extends Thread { public function run(){ global $max_buffer_size; global $data_source; echo "DATA:" . $max_buffer_size; … } } myotherfile.php имеет эти две переменные, объявленные в нем (и к ним можно получить доступ из других классов, но здесь […]

PHP pThreads – Как вы выполняете сборку мусора?

Учитывая следующий код, как вы можете гарантировать, что завершенные объекты MyWorker будут уничтожены / освобождена их память? Из-за того, что мне нужен мой скрипт, мне нужно ~ 50 потоков, которые постоянно получают данные из cURL и обрабатывают его. Я попробовал оба варианта, когда нити никогда не покидают run() , или, как показано в этом примере […]

php – WebSocket, pcntl_fork, корректно закрыть дочерний процесс

Я устанавливаю храповик php websocket. Я делаю pcntl_fork в методе onMessage для работы с каждым клиентом в новом потоке. public function onMessage(ConnectionInterface $from, $msg) { $pid = pcntl_fork(); if ($pid == -1) { $this->myPrint("cant create fork"); } else if ($pid) { } else { // ….. $result $from->send($result); // $pid = getmypid(); // exit($pid); } […]