Ubuntu 16.04 PHP 7.0.4 Phalcon 2.1.x Zephir
$~: php -v
PHP Fatal error: Class 'jsonserializable' not found in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
在php.ini中添加phalcon.so时
我在C中有一些代码可以进行一些硬件访问.此代码已准备就绪并经过充分测试.现在我想实现一个用于控制这个硬件的Web界面.所以我使用Zephir进行了PHP扩展开发.
我的问题是,"Zephir是否可以包含一个外部库.反对它吗?"如果有可能,我该怎么做?
有没有一种方法可以捕获方法/函数调用并使用xdebug跟踪之类的php返回事件?
我尝试使用register_tick_function,但是我不太确定这是个好方法。
我也尝试做自己的php扩展(使用Zephir),但仍然是同样的问题。
顺便说一句,我不想使用xdebug扩展。最好的方法是什么?
我使用简单的阶乘函数执行了此测试(借用http://avelino.xxx/2014/03/golang-c-and-python-the-benchmark-time中的逻辑)
常规PHP代码
function fact($n){
if($n===0)return 1;
return $n*fact($n-1);
}
function calc(){
$t = 0;
for($i=0; $i<100000; $i++){
for($j=0; $j<8; $j++){
$t += fact($j);
}
}
return $t;
}
$result = calc();
echo $result."\n";
Run Code Online (Sandbox Code Playgroud)
PHP使用Zephir
$fact = new Utils\Fact();
$result = $fact->calc();
echo $result."\n";
Run Code Online (Sandbox Code Playgroud)
Zephir代码
namespace Utils;
class Fact{
public function fact(int n) -> int{
if(n==0){
return 1;
}
return n*this->fact(n - 1);
}
public function calc() -> int{
int i,j,total;
let total = 0;
for i in range(0,99999){ …Run Code Online (Sandbox Code Playgroud)