SimpleFork PHP 다중 프로세스 동시성 프레임워크
풀어 주다: 2016-07-30 13:29:40
SimpleFork
프로젝트 주소: https://github.com/huyanping/simple-fork-phpPCNTL 확장을 기반으로 하는 다중 프로세스 프로세스 동시성 프레임워크, 인터페이스 Java의 Thread and Runnable과 유사합니다SimpleFork를 작성하는 이유
멀티 프로세스 프로그램 작성은 멀티 스레드 작성보다 복잡하며 프로세스 재활용, 동기화, 상호 배제 및 통신. 초보자의 경우 위의 문제를 해결하기 어려울 것입니다. 특히 신호처리와 프로세스 통신 분야에서는 문제를 피하기 어렵다. SimpleFork는 JAVA 멀티스레딩과 유사한 일련의 프로세스 제어 인터페이스를 제공하여 재활용, 동기화, 상호 배제, 통신 및 기타 솔루션을 제공합니다. 개발자는 비즈니스 문제에 집중할 수 있으며 프로세스 제어에 대해 너무 많이 생각할 필요가 없습니다. 소개
composer require jenner/simple_forkrequirepath/to/SimpleFork/autoload.php의존
필수 ext-pcntl 프로세스 제어
선택 ext-sysvmsg 메시지 큐
ext-sysvsem 동기화 뮤텍스 잠금 ext-sysvshm 공유 메모리
기능
프로세스 풀 제공
좀비 프로세스 재활용 자동 처리 및 비차단 호출 지원
공유 메모리, System V 메시지 큐, Semaphore 잠금을 제공하여 IPC 통신(프로세스 통신)을 용이하게 합니다.
프로세스 구현을 위해 Process와 Runnable의 두 가지 방법을 제공합니다.
실시간 프로세스 상태
모든 프로세스를 종료하거나 프로세스만 중지하는 경우 beforeExit() 메서드를 재정의하도록 등록할 수 있습니다. 종료하려면 true를 반환하고 계속 실행하려면 false를 반환합니다. 즉시 종료)
하위 프로세스 실행 시 다시 로드 지원
참고
System V 메시지 대기열은 다음과 같은 이유로 삭제되지 않습니다. 프로그램이 종료되면 처리되지 않은 데이터입니다. 파기해야 하는 경우 $queue->remove() 메소드를 호출하여 큐를 삭제하세요.
공유 메모리는 모든 프로세스 종료 후 삭제됩니다.
Semaphore 객체는 객체가 재활용되면 소멸됩니다. 프로세스 풀 start() 후에 wait()를 호출하여 좀비 프로세스를 재활용해야 합니다.
프로세스를 가져오기 전에 호출할 수 있습니다. status(isAlive() 메소드 호출)에는 non-blocking wait를 호출하는 것이 가장 좋습니다.(false) 프로세스 실행 상태의 판단은 원자적 연산이 아니므로 isAlive() 메소드는 보장하지 않습니다. 실제 상태와 완전히 일치한다는 것
어떤 상황에서 프로그램 시작 부분에 추가해야 할지 모르는 경우에는 다음을 추가하는 것이 가장 좋습니다. 기본적으로 첫 번째 줄에 명령문을 추가합니다.
사용 방법 선언(ticks=1);
이 선언은 프로세스 신호 처리에 사용됩니다. 신호 처리기가 등록되면 프로그램은 코드 줄을 실행하기 전에 처리되지 않은 신호가 있는지 자동으로 확인합니다. http://php.net/manual/zh/control-structures.declare.php
할 일
提供更多功能的进程池,模仿java
提供第三方进程通信机制(Redis等)
更多的测试及示例程序
示例程序
更多示例程序见exmples目录simple.phpclassTestRunnableextends\Jenner\SimpleFork\Runnable{/** * 进程执行入口 * @return mixed */publicfunctionrun() {echo"I am a sub process".PHP_EOL; }}$process=new\Jenner\SimpleFork\Process(newTestRunnable());$process->start();shared_memory.phpclassProducerextends\Jenner\SimpleFork\Process{publicfunctionrun(){for($i=0; $i<10; $i++){$this->cache->set($i, $i);echo"set {$i} : {$i}".PHH_EOL; } }}classWorkerextends\Jenner\SimpleFork\Process{publicfunctionrun(){sleep(5);for($i=0; $i<10; $i++){echo"get {$i} : ".$this->cache->get($i) .PHP_EOL; } }}$memory=new\Jenner\SimpleFork\IPC\SharedMemory();$producer=newProducer();$producer->setCache($memory);$worker=newWorker();$worker->setCache($memory);$pool=new\Jenner\SimpleFork\Pool();$pool->submit($producer);$pool->submit($worker);$pool->start();$pool->wait();原创文章,转载请注明: 转载自始终不够
本文链接地址: SimpleFork
php多进程并发框架
转载请注明:始终不够 ? SimpleFork
php多进程并发框架
以上就介绍了SimpleFork php多进程并发框架,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31