PHP는 WEB 개발을 위해 탄생했습니다. 과거에는 pthread가 등장하기 전까지 PHP에는 스레드가 없었기 때문에 PHP의 활력이 높아졌습니다.
추천: "PHP 튜토리얼; #🎜 🎜#》
1. 스레드 생성 및 사용
1. 스레드 클래스기본 생성 그리고 Use:<?php //通过继承Thread类来实现自己的线程类MyThread class MyThread extends Thread{ //重写构造函数 function __construct(){ } //重写run方法(运行的是子线程需要执行的任务) function run(){ } } //对象的实例化和运行就和java一样 $mt = new MyThread(); $mt->start();
<?php //获取创建线程的父线程id Thread::getCreatorId //获取当前线程id Thread::getCurrentThreadId //获取当前线程引用 Thread::getCurrentThread //将线程加入检测 Thread::join //查看线程是否被检测(是否被join) Thread::isJoined //强行杀死线程 Thread::kill
# 🎜🎜#Worker 클래스의 상위 클래스는 Thread 클래스이므로 기본적인 사용법은 Thread와 동일합니다. Thread 클래스와 비교하여 Worker 클래스는 스레드 재사용 기능을 추가합니다(스레드 생성 및 소멸에 소요되는 리소스를 줄이기 위해). 일반적으로 Stackable 클래스와 함께 사용되므로 작업자 클래스를 스레드로 사용할 수 있습니다. 사용할 스레드 또는 작업 컨테이너(예:
<?php class Task extends Stackable{ function __construct($no){ $this->no = $no; } function run(){ echo "task{$this->no}:run".PHP_EOL; } } class MyWork extends Worker{ function __construct(){ } function run(){ } } $t1= new Task(1); $t2= new Task(2); $t3= new Task(3); $my = new MyWork(); $my->stack($t1); $my->stack($t2); $my->start(); $my->stack($t3);
최종 출력:
task1:run task2:run task3:run
물론 Worker 클래스에는 상위 스레드가 이를 관리할 수 있는 다른 메서드가 있습니다.# 🎜🎜#
//获取还没执行的任务数量 Worker::getStacked //判断worker是否关闭 Worker::isShutdown //判断worker是否在工作 Worker::isWorking //关闭销毁worker Worker::shutdown //将任务压栈 Worker::stack //将任务出栈(该api有问题,慎用) Worker::unstack
2. PHP 스레드에서 발생하는 일부 문제 및 주의사항
1 스레드 클래스의 속성은 해시에 직접 사용할 수 없습니다. 테이블(배열) 연산(예:
//这样是无效的 $this->var1["hello"] = "world"; //改为 $this->var1 = ["hello"=>"world"];
위 내용은 PHP pthread 확장 사용법과 함정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!