.so被激活,等待PHP网页调用
build C++ shared library and .so is activated and waiting to be called by PHP webpage
平台:CentOS或linux
我想建立一个c++共享库,它被激活一次,它会像在待机模式,准备被其他应用程序调用。它就像windows中的COM+。我想用两种方式调用c++库。
-
在同一台计算机内,并且该进程是在进程中。
-
(不是必需的,但更可取)共享库可以使用RPC或由局域网内的其他机器调用。例如:DCOM
使用c++构建PHP扩展有点混乱,我希望PHP和c++之间的连接更加"语言/平台独立",但它具有快速的速度(如DCOM)。
有这样的解决方案吗?
我所做的研究:1. SWIG有点接近我所说的,但我不确定它是否可以"备用",我不确定它是否是进程内通信。2. 不,眼镜蛇,我不用java。
更新我问这个的原因。目前我正在使用PHP, IIS (FastCGI), COM+和c#在windows上,他们都工作得很好。但是慢慢地,由于使用微软产品的成本,我想迁移到Linux。该软件成本很高,而且c#的效率比Linux上的本地c++慢。但是Linux上没有COM+ ....
在Unix系统上,没有共享库这样的东西在内存中保持活动状态,即使使用它的程序都停止了。如果这确实是你想要的,你将不得不开发一个特定的服务器应用程序,它可以"永远"运行,并且客户端程序可以连接并发送指令。
客户端和服务器之间的通信通常通过网络连接进行,而不是在同一进程中。如果不允许设置网络连接,则可以使用共享内存。它减少了必须在客户机和服务器进程之间复制的数据量,但这是一种不常见的解决方案。网络通信(或本地套接字)是客户端和服务器之间非常常用的通信方式。
非常流行的存储数据的应用程序当然是数据库。如果你永远运行的"共享库"的主要目标是集中某种缓存,你也可以使用数据库。使用SWIG,您确实可以选择用C编程并将C函数导出到PHP。但你是对的,这样的解决方案是不持久的。每次PHP引擎启动时,共享库也会被重新初始化。如果启动了PHP引擎的多个实例,那么也会启动共享库的多个实例——每个实例都有自己的数据空间(尽管使用共享内存可以确保所有这些实例都可以访问相同的数据)。
SWIG的另一种选择是PHP-CPP库。该库还允许您使用c++构建PHP扩展,并且具有比SWIG更强大的表达式功能。但是同样的限制也适用于这里:它不是持久的。
顺便说一下,一旦PHP扩展被加载,它将被用来服务数百甚至数千的页面浏览量扩展卸载之前。这意味着您可以优化扩展以将某些数据保留在内存中。虽然不会永远,但至少会持续很长一段时间。
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 将加密消息从 php 发送到 C++ 应用程序,然后使用 CryptoPP 进行解密
- 如何使用QT创建器获取网页源代码?
- Qt 网页程序集缓存
- PHP Profiler语言 - 使用 C++ 从 PHP 扩展获取客户端 IP 和 URL
- 如何在C++中获取重定向网页的URL
- Nginx RTMP与InstagramLive-PHP不起作用
- 如何使用PHP将上传到本地主机的一个html文件重定向到磁盘上的另一个html文档
- PHP & C++ $_FILES 和 HttpSendRequestA
- 你能把整个网页嵌入到c++源代码中吗
- WinInet只下载网页的一部分
- 重定向到 C++ 中的网页
- 如何使用 PHP-CPP 在 PHP 类中添加静态数组
- 如何在PHPCPP库中将C++map<string,map<string>>转换为php::value?
- 为什么用C++编写的 phpcpp 扩展函数比用 PHP 编写的函数慢
- QT:AES-256-CBC 根据 PHP 代码在C++中加密/解密
- 从 PHP 调用已编译的C++可执行文件来创建套接字
- 如何从网页上的PHP运行基于服务器客户的CPP文件
- 如何编译 C++ 代码以显示在网页中(如在 PHP 中)
- .so被激活,等待PHP网页调用