donglei2288 2014-06-29 03:35
浏览 15

使用PHP执行并行事件的最简单方法是什么? [重复]

This question already has an answer here:

The problem is simple. I want to continuously execute a function while I wait for another task to finish, like in this silly example:

#!/usr/bin/env php
<?php

$timer = function() {
  static $seconds = 0;
  while(1) {
    sleep(1);
    echo "", $seconds++;
  }
}

$timer(); // I want to run this in parallel

$service = new Service();
$response = $service->goGetSomething('from far far away');

// I want to kill the timer here

I do parallel processing with other languages all the time, but have no idea how to achieve this with PHP. Requirements:

  • The simplest solution as possible, ++ if you use only PHP extensions enabled by default.
  • I don't need Windows support :)

PS: Don't tell me to use nodejs or [your-favorite-language] that doesn't suck :)

</div>
  • 写回答

1条回答 默认 最新

  • duan3019 2014-06-29 03:41
    关注

    Depending on how PHP is configured, it's generally attached to a single thread (1 thread per request because this is a web scripting language). So that means synchronous execution.

    The only way I could think of doing something like this would be to load a page that does an AJAX call (where the other thread is asynchronous). I can't think of any way to do that in the original thread because, by definition, all threads are autistic (thread A doesn't know what thread B is doing, etc)

    评论

报告相同问题?

悬赏问题

  • ¥100 iOS开发关于快捷指令截屏后如何将截屏(或从截屏中提取出的文本)回传给本应用并打开指定页面
  • ¥15 unity连接Sqlserver
  • ¥15 图中这种约束条件lingo该怎么表示出来
  • ¥15 VSCode里的Prettier如何实现等式赋值后的对齐效果?
  • ¥15 流式socket文件传输答疑
  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接