设想情况如下:
调用指定的URL,包括已知Id的SearchDefinition,应该在db中创建一个新的Search记录,并返回新的Search.Id。
在返回Id之前,我需要生成一个新的进程/启动异步执行一个PHP文件,该文件接受新的Search.Id并进行搜索。
然后UI轮询第三个PHP脚本以获取搜索状态(第二个脚本不断更新Db中的搜索记录)。
这给我在异步方式生成第二个PHP脚本方面带来了一个问题。
我将在第三方服务器上运行这个程序,所以对权限几乎没有控制。因此,我倾向于避免对新搜索记录进行cron作业/类似的轮询(如果可以的话,我也不太喜欢轮询)。我不太喜欢在与web无关的工作中使用web服务器,但为了避免权限问题,这可能是必需的。
这似乎给我留下了两个选择:
我不知道上述任何一项都是如何实现的。第一种感觉仍然很恶心。
如果有必要使用CURL或类似于假web调用,我会这样做,但我希望有某种方便的多线程方法,我只需生成一个新线程,并指出适当的功能和权限将从调用者(即web服务器用户)继承。
发布于 2011-05-07 09:38:14
我宁愿使用选项1,这也会使相关的功能更接近彼此。下面是如何向用户发送一些东西,然后关闭连接并继续执行的提示:
(请登录gmail网站*********,来源:http://www.php.net/manual/en/features.connection-handling.php#93441)
<?php
ob_end_clean();
header("Connection: close\r\n");
header("Content-Encoding: none\r\n");
ignore_user_abort(true); // optional
ob_start();
echo ('Text user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Strange behaviour, will not work
flush(); // Unless both are called !
ob_end_clean();
//do processing here
sleep(5);
echo('Text user will never see');
//do some processing
?>发布于 2014-04-22 05:10:02
swoole:异步和并发扩展。https://github.com/matyhtf/swoole
H 110毫秒定时器H 211H 112异步MySQL <代码>H 213/代码><代码>H 114异步任务<代码>H 215H 116异步读写文件系统H 217H 118异步dns查找H 219f 220
https://stackoverflow.com/questions/5920121
复制相似问题