|
|
1
384
在php中可以使用多线程是的,你可以在PHP中做多线程 pthreads
简单测试
首次运行
二次跑
现实世界的例子
|
|
|
2
30
你为什么不用 popen ?
|
|
|
3
17
线程在普通的php中不可用,但是可以通过将http请求用作异步调用来进行并发编程。 将卷曲超时设置设置为1,并使用同一个Session StID用于要相互关联的进程,可以与下面的示例中的会话变量通信。通过这种方法,您甚至可以关闭浏览器,并发进程仍然存在于服务器上。 不要忘记验证正确的会话ID,如下所示:
startprocess.php程序
Prime1.PHP
verifysession.php验证会话
closeprocess.php文件
|
|
|
4
11
虽然不能线程,但在PHP中确实有一定程度的进程控制。这里有用的两个函数集是: 过程控制功能 http://www.php.net/manual/en/ref.pcntl.php posix函数 http://www.php.net/manual/en/ref.posix.php 您可以使用pcntl_fork来派生进程-返回孩子的pid。然后,您可以使用POSIXYKEY删除该PID。 也就是说,如果杀死父进程,应该向子进程发送一个信号,告诉它死亡。如果php本身无法识别这一点,您可以注册一个函数来管理它,并使用pcntl_信号执行一个干净的退出。 |
|
|
5
8
pthreads pecl扩展使使用线程成为可能 |
|
|
6
8
我知道这是一个老问题,但是对于搜索者来说,现在有一个用c编写的pecl扩展,它提供了php多线程功能,它位于这里 https://github.com/krakjoe/pthreads |
|
|
7
5
你可以模拟线程。PHP可以通过后台程序(或后台程序)运行后台进程。这些过程可以通过STDIN和STDUT进行通信。当然,这些进程本身可以是一个PHP程序。这可能是最接近的。 |
|
|
8
5
可以使用Excor()执行命令行脚本(例如命令行PHP),如果将输出管到文件,则脚本不会等待命令完成。 我不太记得PHP CLI语法,但你想要的是:
我认为很多共享托管服务器出于安全原因默认禁用exec(),但可能值得一试。 |
|
|
9
3
根据你想做什么,你也可以使用curl_multi来实现它。 |
|
|
10
3
我知道这太老了,但你可以看看 http://phpthreadlib.sourceforge.net/ 它支持双向线程间通信,还内置了杀掉子线程(防止孤儿)的保护。 |
|
|
11
2
你可以选择:
|
|
|
12
2
PCNTL_U叉子怎么样? 查看我们的手册页以获取示例: PHP pcntl_fork |
|
|
13
2
这个 Thread class 从pecl pthreads 2.0.0开始可用。 |
|
14
2
|
|
|
15
0
在撰写当前评论时,我不知道php线程。我亲自来这里寻找答案,但有一个解决方法是,从web服务器接收请求的php程序将整个答案公式委托给一个控制台应用程序,该应用程序存储其输出,即请求的答案,对于二进制文件,启动控制台应用程序的php程序逐字节返回该二进制文件,作为对接收到的请求的响应。控制台应用程序可以用服务器上运行的任何编程语言编写,包括那些具有适当线程支持的语言,包括使用OpenMP的C++程序。 一个不可靠、肮脏的技巧是使用php执行控制台应用程序“uname”,
并将控制台命令的输出打印到html输出中,以找出服务器软件的确切版本。然后将完全相同版本的软件安装到一个virtualbox实例中,编译/组装任何需要的完全独立的二进制文件(最好是静态的),然后将它们上载到服务器。从那时起,PHP应用程序可以使用控制台应用程序中具有适当多线程的角色的二进制文件。当服务器管理员没有在服务器上安装所有需要的编程语言实现时,这是一种肮脏、不可靠的解决方案。需要注意的是,在php应用程序收到控制台应用程序的每个请求时,都会终止/退出/终止get_。 至于托管服务管理员对这种服务器使用模式的看法,我想可以归结为文化。在北欧,服务提供商必须发布广告,如果允许执行控制台命令,并且允许上传非恶意软件文件,服务提供商有权在几分钟甚至30秒后杀死任何服务器进程,然后托管服务管理员就没有任何理由来形成适当的投诉。在美国和西欧,情况/文化非常不同,我相信在美国和/或西欧,托管服务提供商很有可能 拒绝为使用上述技巧的托管服务客户端提供服务。这只是我的猜测,考虑到我个人在美国托管服务方面的经验,以及我从其他人那里听说的西欧托管服务。在撰写我目前的评论(2018年9月1日)时,我对南欧托管服务提供商、南欧网络管理员的文化规范一无所知。 |
|
|
16
-2
可能是我遗漏了一些东西,但是exec在windows环境中并没有异步工作,我在windows环境中使用了如下代码,它工作起来很有魅力;)
|
|
|
17
-4
多线程意味着同时执行多个任务或进程,我们可以通过使用下面的代码在PHP中实现这一点,虽然在PHP中没有实现多线程的直接方法,但是我们可以通过以下方式实现几乎相同的结果。
} 测试程序1.PHP
这将同时执行test_1.php两次,并且两个进程都将同时在后台运行,这样您就可以在php中实现多线程。 这家伙干得真不错 Multithreading in php |