> 백엔드 개발 > PHP 튜토리얼 > http请求之间实现操作系统层面的通信,有可能吗?

http请求之间实现操作系统层面的通信,有可能吗?

WBOY
풀어 주다: 2016-06-06 20:40:01
원래의
1125명이 탐색했습니다.

最近在做一个东西, 用python写, wsgi的接口, 部署在sae, sae的服务器应该是nginx吧. 当然, 解决方案不一定是python的, php也可以, 但是千万不要跟我说自己实现一个服务器, 现在是nginx, nginx... .

情况是这样的: 有两个并发的请求, 记作A和B吧, 对于服务器来说是两个线程. A执行到一半, 阻塞下来, 直到B给A发出信号, A才继续执行下去.

这样好像有一个蛮直观的方法: 在cache或者数据库里面设置一个布尔, 当作mutex用. 但是我阻塞的时候, 我就需要不停地去对数据库进行轮询, 这样耗费的资源实在太多. 所以我就想, 有没有办法曲线救国, 去调用系统里的(渣浪的系统大概是Linux, 也就是pthread的) mutex API呢. 如果两个请求同一个进程, 那么也许可以把mutex的地址保存到数据库......好吧我大概想多了.

不要用死循环(就算+sleep)去轮询, 我什么都愿意.

回复内容:

最近在做一个东西, 用python写, wsgi的接口, 部署在sae, sae的服务器应该是nginx吧. 当然, 解决方案不一定是python的, php也可以, 但是千万不要跟我说自己实现一个服务器, 现在是nginx, nginx... .

情况是这样的: 有两个并发的请求, 记作A和B吧, 对于服务器来说是两个线程. A执行到一半, 阻塞下来, 直到B给A发出信号, A才继续执行下去.

这样好像有一个蛮直观的方法: 在cache或者数据库里面设置一个布尔, 当作mutex用. 但是我阻塞的时候, 我就需要不停地去对数据库进行轮询, 这样耗费的资源实在太多. 所以我就想, 有没有办法曲线救国, 去调用系统里的(渣浪的系统大概是Linux, 也就是pthread的) mutex API呢. 如果两个请求同一个进程, 那么也许可以把mutex的地址保存到数据库......好吧我大概想多了.

不要用死循环(就算+sleep)去轮询, 我什么都愿意.

可否使用命名管道呢

查阅一下PHP官方文档 进程控制扩展 里面的 posix_kill 是否可以?

=_=! 不是太懂题主的意思,可能是说 A 和 B 一块运行,A运行到一半不运行了然后等待 B 的通知再执行,是这个意思么?

如果是这个意思的话我觉得你可以把 A 拆成 A' 和 C 两部分,A' 为接受 B 通知之前的代码,C 为接受 B 通知之后的代码。A' 和 B 执行完毕了都跳转到 C 去执行代码。C 代码首先要检测 A' 和 B 处理的内容是否完备,未完备则停止运行。当然处理的数据都最好用外部的存储存储起来。我觉得这样应该是最简单的实现方法了吧。

另外,如果是 SAE 的话就不要做他想了,限制超多的根本不太可能会让你接触到系统级别的接口之类的。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿