字体:  

PHP与其他语言互交的问题

simonsoft 发表于: 2008-8-28 00:03 来源: PHPChina 开源社区门户

我现在写一个网络协议监控程序,用户表现层用PHP实现,协议分析等底层用C/C++实现。用户通过PHP设置要过滤的协议或要过滤的IP。但是PHP如何通知底层C程序呢?用文件不行,存在同步问题不安全(PHP和C程序可能同时读写文件)。如果是用数据库,C程序不知道PHP什么时候更新了MYSQL,那只能每隔一段时间读一次数据库,然后获取最新的配置信息?那样用户的操作还不能是即时生效。我看ntop就是表现层用PHP实现,底层C++,但他好像没用数据库。所以想问下,如何让用户通过PHP创建或更新配置文件后,告诉C程序?

最新回复

leric at 2008-8-28 00:12:31
如果只是更新配置文件的话可以用kill给它发个信号就行了
如果需要通知的东西比较多,就用socket建立个服务吧
simonsoft at 2008-8-28 00:17:33
自己想到个 不知道可不可行
用c创建个进程ACCEPT() 然后php通过套接字连上去,可行吗?
simonsoft at 2008-8-28 00:18:59

QUOTE:

原帖由 leric 于 2008-8-28 00:12 发表
如果只是更新配置文件的话可以用kill给它发个信号就行了
如果需要通知的东西比较多,就用socket建立个服务吧
恩 socket可行就好

kill发信号 这个PHP机制还不是蛮懂哈。kill发给C程序进程????
leric at 2008-8-28 00:19:25
没错,那就是Socket的方式了,原来做过PHP和Java通过Socket通信的,还是比较方便的。
simonsoft at 2008-8-28 00:23:51
3Q
PS: PHP 发 KILL信号具体是什么,终止进程?还是PHP有文件的全局锁之类?
心痛 at 2008-8-28 08:28:34
关注。。。
sunceenjoy at 2008-8-28 09:10:11
1,exec不行?

2,你既然都写好了c程序,就很容易把它转成php扩展


3,上面说的socket
leric at 2008-8-28 09:55:27
记得Kill的信号有两个留给用户自定义的,好像叫SIGUSR1,SIGUSR2,可以在C程序里注册个Handler来更新配置,PHP在更新了配置信息后通知C程序进行更新。发送信号先用进程名找到pid,用exec调用kill。
知道有这么回事儿,不知道在这儿能用否
marvin at 2008-9-01 14:48:07
直接编译成扩展,前台调用c函数..
pylong at 2008-9-01 19:56:43
还不如直接做成PHP扩展