ayu*_*ush 4 php java communication shared-memory
有人能为我提供链接或片段,其中PHP进程写入内存并且Java进程从共享内存中读取吗?
谢谢你的精彩答案.
编辑问题:假设我在这样的PHP中创建一个共享内存
<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>
Run Code Online (Sandbox Code Playgroud)
现在有一些方法,我可以通过它传递值,$shm_id然后在java中读取它.
如果你不需要Java和PHP之间的同步交互 - 我会使用memcached,membase或其他类型的内存密钥库.
对于大量数据流,另一种方法是使用Unix命名管道(FIFO).这是IPC(进程间通信)的常用方法.首先使用mkfifo命令将管道创建为普通文件.添加一些合理的访问权限.在PHP中打开管道,r+模式为普通文件并写入,最后关闭.在Java端,您将其作为普通文件保持打开状态,并FileInputStream使用阻塞read/ readline非阻塞NIO 连续读取.
与SHM相比,您不必使用JNI,共享内存同步,环形缓冲区实现,锁定和内存泄漏.您可以以最低的开发成本获得简单的读/写和FIFO队列.
您将其删除为普通文件.不要使用随机访问,seek因为它是没有历史记录的真实流.
你为什么不使用一些消息队列?您无法直接写入JVM的内存或与其他进程共享它.
为了在其他人之间进行通信,您可以使用Message Queue技术.您可以运行消息队列,PHP可以轻松地传输数据.java应用程序可以读取队列,获取数据并进行相应的处理.
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |