代写c代写php,c代写多钱

发布时间:2022-11-17

本文目录一览:

  1. 如何用C语言编写PHP扩展的详解
  2. PHP是用什么语言编写的?
  3. 怎么编写PHP程序?

如何用C语言编写PHP扩展的详解

  1. 预定义home目录,也可以其他任意目录,写一个文件,例如caleng_module.def。 内容是你希望定义的函数名以及参数:
    int a(int x,int y)
    string b(string str,int n)
    
  2. 到PHP源码目录的ext目录:
    cd /usr/local/php-5.4.0/ext/
    
    执行命令,生成对应扩展目录:
    ./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def
    
  3. 修改config.m4: 去掉dnl的注释:
    PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module support,
    Make sure that the comment is aligned:
    [  --enable-caleng_module           Enable caleng_module support])
    
  4. 修改caleng_module.c: 代码如下:
    /* {{{ proto int a(int x, int y)
         */
    PHP_FUNCTION(a)
    {
        int argc = ZEND_NUM_ARGS();
        int x;
        int y;
        int z;
        if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
            return;
        z = x + y;
        RETURN_LONG(z);
    }
    /* }}} */
    /* {{{ proto string b(string str, int n)
         */
    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 = '\0';
        RETURN_STRINGL(result, result_length, 0);
    }
    /* }}} */
    
  5. 生成扩展库:
    cd ./caleng_module
    /usr/local/php/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make install
    
  6. 到PHP的对应extensions目录:
    cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
    
    该目录下有生成的caleng_module.so文件。
  7. 修改php.ini
    cd /usr/local/php/lib/
    
    php.ini中增加扩展信息:
    extension=caleng_module.so
    
  8. 重启Apache:
    /usr/local/apache2/bin/apachectl restart
    
  9. 检查加载:
    /usr/local/php/bin/php -m
    
  10. PHP调用:
    echo a(1,2);
    
    输出 3 就说明成功了!

原文内容

Linux下用C开发PHP扩展:

  1. 首先下载PHP源码包,假设源码包目录为:/software/php-5.2.13
    cd /software/php-5.2.13/ext
    
  2. 假设我们要开发一个名为caleng_module的扩展,该扩展包含两个函数:
    • a:处理两个整型相加
    • b:处理字符串重复输出
  3. 首先编写一个函数定义文件,该文件编写函数原型后缀为.def,假设为:caleng_module.def
    int a(int x, int y)
    string b(string str, int n)
    
  4. 通过扩展骨架生成器,将在ext目录下自动建立扩展目录caleng_module
    ./ext_skel --extname=caleng_module --proto=caleng_module.def
    
  5. 修改配置文件:
    vim /software/php-5.2.13/ext/caleng_module/config.m4
    
    将如下行的注释标签dnl去掉:
    PHP_ARG_ENABLE(myfunctions, whether to enable myfunctions support,
    Make sure that the comment is aligned:
    [  --enable-myfunctions           Enable myfunctions support])
    
  6. 完善函数ab的功能:
    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 = '\0';
        RETURN_STRINGL(result, result_length, 0);
    }
    
  7. 编译安装,假设PHP的安装目录为:/usr/localhost/webserver/php
    cd /software/php-5.2.13/ext/caleng_module
    /usr/localhost/webserver/php/bin/phpize
    ./configure --with-php-config=/usr/localhost/webserver/php/bin/php-config
    make
    make install
    
    现在将在/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613目录下生成caleng_module.so文件。 在php.ini配置文件中加入:
    extension=caleng_module.so
    

PHP是用什么语言编写的?

PHP是一种语言,其底层主要是用C语言实现的。 PHP混合了C、Java、Perl等语法特点。如果你学过其中任意一个,再来学PHP会更容易上手。 一般推荐先学C语言,再学PHP。在掌握C语言和数据结构的基础上,学习PHP会更简单,只要掌握PHP的语法即可进行初步开发。

怎么编写PHP程序?

首要条件是你必须有一个正在运行的支持PHP的Web服务器。假定你的服务器上所有PHP文件的扩展名为.php3

PHP的安装

有关PHP的安装配置,可以查阅相关资源。

语法

PHP语言近似于C语言,语法上借鉴了C语言。你可以混合编写PHP代码和HTML代码,不仅可以将PHP脚本嵌入到HTML文件中,还可以将HTML标签嵌入到PHP脚本中。 以下是几种嵌入PHP代码的方法:

  • <? ... ?>
  • <?php ... ?>
  • <script language="php"> ... </script>
  • <% ... %> 注意:使用<? ... ?>时可能会与XML发生冲突,是否支持这种简写形式取决于PHP的设置。

语句与注释

PHP中用分号;分隔语句。PHP支持C、C++和Unix风格的注释方式:

  • /* C,C++风格多行注释 */
  • // C++风格单行注释
  • # Unix风格单行注释

echo 和 print

PHP中最简单的交互是通过echoprint语句实现的。两者功能几乎相同,但有一个重要区别:echo可以同时输出多个字符串,而print只能输出一个字符串。 示例:

$a = "hello";
$b = "world";
echo "a", "b";
print "a", "b"; // 这里会报错

一个简单的实例

<HTML>
<HEAD>
<TITLE>
<?php
echo "Hello World!";
?>
</TITLE>
</HEAD>
<BODY>
<H1>First PHP page</H1>
<HR>
<?php
// Single line C++ style comment
/*
printing the message
*/
echo "Hello World!";
# Unix style single line comment
?>
</BODY>
</HTML>

建议找一本PHP书籍,静下心来研究一周,再不断实践!