热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

最近在做一个东西,用python写,wsgi的接口,部署在sae,sae的服务器应该是nginx吧.当然,解决方案不一定是python的,php也可以,但是千万不要跟我说自己实现一个服务器,现在是nginx,nginx....情况是这样的:...
最近在做一个东西, 用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 的话就不要做他想了,限制超多的根本不太可能会让你接触到系统级别的接口之类的。

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了在无法联网的情况下,通过下载rpm包离线安装zip和unzip的方法。详细介绍了如何搜索并下载合适的rpm包,以及如何使用rpm命令进行安装。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
author-avatar
呂小亽曄
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有