我使用PHP查询Oracle数据库,但在某个时刻,可能是因为PHP代码非常复杂,我得到了内存泄漏。我正在努力解决这个问题,但我问你:如果我将所有复杂的PHP代码转换为C代码,并在需要时从PHP调用“exec”,我是否在性能和内存优化方面获得了一些成果?或者这是一个坏主意?为什么?
答案 0 :(得分:7)
如果你想用C语言重写代码,那么你最好把它作为一个PHP模块编写,而不是使用exec()从PHP调用的独立程序。
答案 1 :(得分:1)
只是一个半相关的想法:
http://github.com/facebook/hiphop-php/wiki
HipHop for PHP转换PHP源代码 代码转换为高度优化的C ++。它是 由Facebook开发并发布 作为2010年初的开源。
答案 2 :(得分:1)
一般来说,您将失去性能,因为系统必须生成另一个进程并等待它在返回PHP脚本之前终止。 PHP中的内存泄漏是我很少看到的,尽管它们可能会发生。它也可以是泄漏内存的底层C包装器(每个示例都是Oracle DB包装器)。安装Xdebug之类的调试器可以帮助您找到导致此泄漏的原因。
我建议您阅读:Finding cause of memory leaks in large PHP stacks。
PHP 5.3还引入了garbage collector。
答案 3 :(得分:0)
任何复杂性都是相对的。如果你不能分解复杂性,用另一种形式或语言写它就无济于事。
简而言之:没有一些背景就无法回答。