phpc源码
php是一个脚本语言,如果需要系统调用,需要用C语言编写一个扩展来实现,另外C是静态编译的,执行效率比PHP代码高很多。同样的运算代码,使用C来开发,性能会比PHP要提升数百倍。编写好的php扩展要在编译php源码时加进去。
⑵ 求帮忙转换php代码c++源码转换,C++源码如下
<?php
functionGenerateKeyRor($value,$key){
$i=0;
while($i<$key){
$value=(0x7fffffff&($value>>1))|(($value&1)<<31);
++$i;
}
return$value;
}
functionGenerateKey($stime){
$key=773625421;
$value=GenerateKeyRor($stime,$key%13);
$value=$value^$key;
$value=GenerateKeyRor($value,$key%17);
return$value;
}
echoGenerateKey(1404409006);
?>
你是不会php还是不会c++……?
⑶ 如何用C语言编写PHP扩展的详解
一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13
一、首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13
#> cd /software/php-5.2.13/ext
二、假设我们要开发一个名为caleng_mole的扩展,该扩展包含两个函数:a--处理两个整型相加和b-处理字符串重复输出;
1、首先编写一个函数定义文件,该文件编写函数原型后缀为def,假设为:caleng_mole.def
int a(int x, int y)
string b(string str, int n)
2、通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_mole
#> ./ext_skel --extname=caleng_mole --proto=caleng_mole.def
3、修改配置文件: #> vim /software/php-5.2.13/ext/caleng_mole/config.m4,将如下行的注释标签"dnl"去掉,修改后如下所示:
PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,
Make sure that the comment is aligned:
[ --enable-myfunctions Enable myfunctions support])
4、完善函数a和b的功能: #> vim /software/php-5.2.13/ext/caleng_mole/caleng_mole.c
PHP_FUNCTION(a)
{
int x, y, z;
int argc = ZEND_NUM_ARGS();
if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
return;
z = x + y;
RETURN_LONG(z);
}
PHP_FUNCTION(b)
{
char *str = NULL;
int argc = ZEND_NUM_ARGS();
int str_len;
long n;
char *result;
char *ptr;
int result_length;
if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
return;
result_length = str_len * n;
result = (char *) emalloc(result_length + 1);
ptr = result;
while (n--) {
memcpy(ptr, str, str_len);
ptr += str_len;
}
*ptr = '