Download the PHP package sidorkinalex/multiphp without Composer
On this page you can find all versions of the php package sidorkinalex/multiphp. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sidorkinalex/multiphp
More information about sidorkinalex/multiphp
Files in sidorkinalex/multiphp
Package multiphp
Short Description multithreading in php by means of php-cli and Redis
License MIT
Homepage https://github.com/SidorkinAlex/multithreading_php
Informations about the package multiphp
MultiThreading in php from Redis + php-cli
this package is designed to quickly run background php-cli scripts with the ability to wait for the result of their execution in the main thread.
Inslall and including in project
Install
You can install the package via the compositor by running the command:
Or you can download the current version from github and connect 3 files to the core of your project
Include
To connect in your project, you must create a class that inherits from the Thread class and override the following variables:
you also need to create an entry point to the application to run through the console(php-cli) in the current example, this is /var/www/html/exec.php
in the file for execution from the console, you need to put the code to start the execution of the stream, as the parameter will pass the key to get the stream data.
include 'vendor/autoload.php'; If the package is installed via the composer or if downloaded from github, connect the 3 files listed above.
$argv[1] a unique thread key that is generated when the thread is started and passed as a parameter to the php-cli script. Depending on the framework, this variable may change.
SidorkinAlex\Multiphp\Thread::shell_start($key); calling a static method that starts the execution of the function passed to the thread.
Examples install from Symfony
https://github.com/SidorkinAlex/symfony-website-skeleton-multithreading_php/pull/1/files
Example code
Example 1 (parallel execution)
In the example, we see the creation of two threads, which are passed the function of iterating through arrays with a son at the end of each step for 3 seconds. if we would execute them sequentially, the script execution time would be 18 seconds, when running them in parallel threads, the script execution time is 9 seconds.
Example 2 (background thread)
Example 2 shows the code that implements the start of sending emails. the execution of the testpars method is completed by running the $EmailSendlerThread thread and does not wait for its execution.
Therefore, the response to such a request will be very fast, the main thread will not wait for the $EmailSendlerThread thread to finish, but will simply return {"status" : "ok"} to the initiator.
Многопоточность на PHP с помошбю Redis + php-cli
Этот пакет предназначен для быстрого запуска фоновых php-cli скриптов с возможностью ожидания результата их выполнения в основном потоке.
Установка и включение в проект
Установить
Вы можете установить пакет через компоновщик, выполнив команду:
Или вы можете загрузить текущую версию с github и подключить 3 файла к ядру вашего проекта
Подключение к проекту
Чтобы включить его в свой проект, необходимо создать класс, который наследуется от класса Thread, и переопределить следующие переменные:
вам также необходимо создать точку входа в приложение для запуска через консоль(php-cli) в текущем примере это /var/www/html/exec.php
в файл для выполнения из консоли нужно поместить код для запуска выполнения потока, так как параметр передаст ключ для получения данных потока.
include 'vendor/autoload.php'; Если пакет установлен через composer. Eсли загружен с github, подключите 3 файла, перечисленные выше.
$argv[1] уникальный ключ потока, который генерируется при запуске потока и передается в качестве параметра скрипту php-cli. В зависимости от структуры эта переменная может изменяться.
SidorkinAlex\Multi php\Thread::she'will_start($key); вызов статического метода, который запускает выполнение функции, переданной потоку.
Примеры установки для Symfony
https://github.com/SidorkinAlex/symfony-website-skeleton-multithreading_php/pull/1/files
Примеры кода
Пример 1 (паралельное выполнение)
В примере мы видим создание двух потоков, в котрые передается вункция перебора массивов с сном вконце каждого шага на 3 секунды. если мы бы выполняли их последовательно, то время выполнения скрипта было бы 18 секунд, при запуске их паралельными потоками время выполнения скрипта составляет 9 секунд.
Пример 2 (фоновый поток)
В примере 2 представлен код который реализует запуск отправки писем. выполнение метода testpars завершается запуском потока $EmailSendlerThread и не ждет его выполнения.
Поэтому ответ на подобный запрос будет очень быстрым основной поток не будет ждать завершения работы потока $EmailSendlerThread а просто вернет {"status" : "ok"} инициатору.