2
|
Itay Moav -Malimovka · 技术社区 · 15 年前 |
1
9
答案真的取决于它是什么样的过程。 如果是长时间运行的过程(至少秒) 那么,用C++编写的外部程序可能会非常简单。它没有PHP扩展的复杂性,并且它的稳定性不会影响PHP/Apache。您可以通过管道、共享内存或其他方式进行通信… 如果是短时间运行的过程(以毫秒计) 然后您很可能需要编写一个PHP扩展。这样就可以非常快速地调用它,几乎不需要每次调用的开销。 另一种可能是自定义服务器 它在一个Unix域套接字上监听,并在PHP请求信息时快速响应PHP。然后,每次调用的开销基本上就是创建一个套接字(不错)。服务器可以是任何语言(C、C++、Python、Erlang等等),客户端可以是一个使用SokKy**()函数的50行PHP类。 在做出这个决定之前,需要评估很多信息。在进入真正紧密的循环或数千次重复的函数调用之前,PHP通常不会显示速度慢。换句话说,HTTP请求的开销和网络延迟通常使PHP延迟无关紧要(除非以上适用)
通过提交自定义的PHP扩展,您可以显著地增加维护它所需的知识基础(甚至高于C++)。但它是一个 必要时的最佳选择 . 请随时更新您的问题与更多的细节,我相信堆栈溢出将乐于帮助。 |
2
3
建议 PorterstemmerAlgorithm有一个 C 实施可在 http://tartarus.org/~martin/PorterStemmer/c.txt 将这个C程序与数据源联系起来并使其成为独立的可执行文件应该是一件容易的事情。然后,您只需使用一个proc函数从php调用它,例如 proc_open() 除非每个php请求需要多次调用这个程序,否则这种方法应该可以节省构建和集成php扩展的工作量,更不用说(在c中)已经完成了艰苦的工作。 |
3
0
我不知道porterstemmarelgorithm是什么。但是,如果可以使进程并行运行并收集信息,可以查看在Java中容易实现的并行运行过程。不确定如何在PHP中调用它,但肯定是可维护的。 您可以看看这个框架。看起来很容易实现 https://computefarm.dev.java.net/ 当做, 富兰克林。 |
4
0
如果出于速度的原因,你绝对需要用另一种语言重写,那么我认为gahooa的答案很好地涵盖了选项。但是,在执行此操作之前,是否确实已经尽了一切努力提高了PHP实现的性能?
|