用C 扩展PHP

合集下载

Windows下PHP开启mcrypt扩展和SSL(OpenSSL)cul扩展支持

Windows下PHP开启mcrypt扩展和SSL(OpenSSL)cul扩展支持

Windows下PHP开启mcrypt扩展和SSL(OpenSSL)扩展支持study2010-01-1612:32:17阅读235评论0字号:大中小订阅今天想使用一下PHP的OpenSSL扩展库,习惯性的从php.ini中相应行打开支持,然后刷新页面,发现竟然还是不支持?郁闷之下,看了看Apache的错误日志:提示“不能加载XXX动态库"?真是见鬼,别的链接库都可以装入,为什么php_mcrypt.dll和php_openssl.dll这两个链接库无法装入呢?上网查了一下资料,原来这两个扩展是依赖于第三方库的。

1,要想开启mcrypt支持,系统需要安装了libmcrypt.dll库。

这个一般用户是没有安装过的,但不用担心,PHP的windows发行包里已经给我们附带了此文件,在PHP压缩包的根目录下即可找到,然后将其复制到%system%/system32目录下即可。

2,要想开启OpenSSL支持,系统需要安装libeay32.dll和ssleay32.dll两个库。

如果你以前安装过OpenSSL,那么你的系统目录中应该已经存在这两个文件;如果没有安装,PHP的windows发行包里同样附带了这两个文件,将其复制到%system%/system32目录下即可。

如何开启PHP curl函数库收藏windows下开启方法:1、拷贝PHP目录中的libeay32.dll,ssleay32.dll,php5ts.dll,php_curl.dll文件到system32目录。

2、修改php.ini:配置好extension_dir,去掉extension=php_curl.dll前面的分号。

3、重起apache。

测试是否安装成功:<?php$ch=curl_init();curl_setopt($ch,CURLOPT_URL,""); curl_setopt($ch,CURLOPT_HEADER,1);curl_exec($ch);curl_close($ch);?>linux下开启方法:方法一安装cURL#wget http://curl.haxx.se/download/curl-7.17.1.tar.gz#tar-zxf curl-7.17.1.tar.gz#./configure--prefix=/usr/local/curl#make;make install安装php只要打开开关--with-curl=/usr/local/curl就可以了。

如何使用C#编写可扩展的桌面应用程序

如何使用C#编写可扩展的桌面应用程序

如何使用C#编写可扩展的桌面应用程序C#(C Sharp)是一种广泛应用于开发Microsoft Windows平台的对象导向编程语言。

它是一个强大且灵活的编程语言,适用于各种应用程序开发,包括可扩展的桌面应用程序。

在本文中,我们将探讨如何使用C#编写可扩展的桌面应用程序的关键概念和实践。

1. 理解可扩展性的概念:可扩展性是桌面应用程序设计中的一个重要概念。

它指的是应用程序的能力,可以轻松地添加新功能或修改现有功能,以适应不断变化的需求。

一个可扩展的应用程序应该具有松耦合的模块和组件,这样可以方便地添加、删除或修改功能,而不会对其他部分造成影响。

2. 使用面向对象的编程方法:C#是一种面向对象的编程语言,因此使用面向对象的编程方法是开发可扩展桌面应用程序的关键。

面向对象的编程充分利用了封装、继承和多态等特性,使代码更可重用、可维护,并且能够以模块化的方式组织应用程序的功能。

3. 使用设计模式:设计模式是可扩展应用程序开发中的重要工具。

它提供了一种经过验证的方法,用于解决常见的软件设计问题。

例如,使用工厂模式可以灵活创建对象,使用单例模式可以确保只有一个实例存在。

了解和使用设计模式可以帮助开发人员更好地组织代码,并更容易地添加新功能。

4. 利用.NET框架:C#是基于.NET框架的一种编程语言。

.NET框架提供了许多用于开发可扩展桌面应用程序的功能和工具。

例如,Windows Presentation Foundation(WPF)是.NET框架中的一种图形界面技术,它使用XAML(可扩展应用程序标记语言)来构建富客户端应用程序。

使用WPF,您可以创建具有丰富用户界面和动画效果的应用程序。

5. 使用插件架构:插件架构是实现可扩展桌面应用程序的一种常见方法。

它允许您将应用程序的功能划分为独立的插件,并在运行时动态加载它们。

这样,您可以根据需要添加或删除插件,而无需修改应用程序的核心代码。

C#提供了强大的反射功能,可以帮助您实现插件机制。

php so扩展反编译

php so扩展反编译

php so扩展反编译PHP SO扩展是一种用于扩展PHP功能的工具,可以让开发者在PHP 中使用C或C++编写的代码。

本文将介绍PHP SO扩展的反编译过程。

一、什么是PHP SO扩展PHP SO扩展是一种用于扩展PHP功能的工具,它允许开发者使用C 或C++编写的代码来扩展PHP的功能。

这种扩展可以提供更高效的性能和更多的功能选项,使开发者能够更好地满足项目需求。

二、为什么需要反编译PHP SO扩展在一些情况下,我们可能需要对PHP SO扩展进行反编译。

比如,当我们使用一个PHP扩展但无法获取其源代码时,我们可以通过反编译来了解其实现原理,以便更好地理解和使用该扩展。

三、反编译PHP SO扩展的过程1.了解反编译工具:首先,我们需要了解一些常用的反编译工具,如IDA Pro、Ghidra等。

这些工具可以帮助我们分析二进制文件并还原其源代码。

2.分析二进制文件:使用反编译工具打开PHP SO扩展的二进制文件,对其进行分析。

通过查看二进制文件的函数、变量等信息,我们可以初步了解扩展的结构和功能。

3.还原源代码:根据分析的结果,我们可以开始还原扩展的源代码。

这个过程可能需要一些时间和技巧,因为二进制文件的结构可能会比较复杂。

4.验证和调试:还原源代码后,我们需要进行验证和调试,确保还原的代码能够正常运行,并符合我们的预期。

四、总结通过反编译PHP SO扩展,我们可以了解其实现原理,并能够更好地使用和定制该扩展。

反编译工作需要一定的专业知识和经验,但对于那些无法获取源代码的扩展来说,它是一种很有用的方法。

希望本文对你理解PHP SO扩展的反编译过程有所帮助。

如果你有任何问题或建议,请随时留言。

centos php 编译curl扩展

centos php 编译curl扩展

要在CentOS上编译PHP的cURL扩展,您可以按照以下步骤进行操作:1. 确保您已经安装了PHP和cURL开发包。

在CentOS上,您可以使用以下命令安装它们:```sudo yum install php php-devel php-pear gcc make curl-devel```2. 下载最新的cURL源代码包。

3. 解压cURL源代码包。

使用以下命令将源代码包解压到您的目录中:```bashtar -zxvf curl-<version>.tar.gz```请将`<version>`替换为您下载的cURL源代码包的版本号。

4. 进入cURL源代码目录。

使用以下命令进入解压后的目录:```bashcd curl-<version>```请将`<version>`替换为您下载的cURL源代码包的版本号。

5. 配置cURL源代码。

运行以下命令进行配置:```bash./configure --with-php-config=/usr/bin/php-config --with-curl=/usr ```这将配置cURL源代码以便与您的PHP安装一起编译。

请确保将`/usr/bin/php-config`替换为您实际的PHP配置文件的路径,将`/usr`替换为您实际的cURL安装路径。

6. 编译和安装cURL扩展。

运行以下命令进行编译和安装:```gomake && make install这将编译cURL扩展并将其安装到您的系统中。

7. 配置PHP以使用cURL扩展。

打开您的PHP配置文件(例如`php.ini`),并添加以下行以启用cURL扩展:```makefileextension=curl.so```这将告诉PHP加载cURL扩展。

根据您的实际配置,可能需要更改扩展名(例如,在某些系统中为`curl.so`)。

8. 重启Web服务器。

c#Expression扩展

c#Expression扩展

c#Expression扩展⼀、简介当查询⽐较复杂时,需要很多判断或者跨⽅法传递参数时使⽤⼆、扩展类///<summary>/// Expression表达式扩展操作类///调⽤⽅法:repository.GetAll().AsExpandable().Where(predicate)///</summary>public static class ExpressionExtensions{///<summary>///以特定的条件运⾏组合两个Expression表达式///</summary>///<typeparam name="T">表达式的主实体类型</typeparam>///<param name="first">第⼀个Expression表达式</param>///<param name="second">要组合的Expression表达式</param>///<param name="merge">组合条件运算⽅式</param>///<returns>组合后的表达式</returns>public static Expression<T> Compose<T>(this Expression<T> first, Expression<T> second,Func<Expression, Expression, Expression> merge){var map =first.Parameters.Select((f, i) => new { f, s = second.Parameters[i] }).ToDictionary(p => p.s, p => p.f);var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body);return mbda<T>(merge(first.Body, secondBody), first.Parameters);}///<summary>///以 Expression.AndAlso 组合两个Expression表达式///</summary>///<typeparam name="T">表达式的主实体类型</typeparam>///<param name="first">第⼀个Expression表达式</param>///<param name="second">要组合的Expression表达式</param>///<returns>组合后的表达式</returns>public static Expression<Func<T, bool>> And<T>(this Expression<Func<T, bool>> first,Expression<Func<T, bool>> second){return pose(second, Expression.AndAlso);}///<summary>///以 Expression.OrElse 组合两个Expression表达式///</summary>///<typeparam name="T">表达式的主实体类型</typeparam>///<param name="first">第⼀个Expression表达式</param>///<param name="second">要组合的Expression表达式</param>///<returns>组合后的表达式</returns>public static Expression<Func<T, bool>> Or<T>(this Expression<Func<T, bool>> first,Expression<Func<T, bool>> second){return pose(second, Expression.OrElse);}private class ParameterRebinder : ExpressionVisitor{private readonly Dictionary<ParameterExpression, ParameterExpression> _map;private ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map){_map = map ?? new Dictionary<ParameterExpression, ParameterExpression>();}public static Expression ReplaceParameters(Dictionary<ParameterExpression, ParameterExpression> map, Expression exp){return new ParameterRebinder(map).Visit(exp);}protected override Expression VisitParameter(ParameterExpression node){ParameterExpression replacement;if (_map.TryGetValue(node, out replacement))node = replacement;return base.VisitParameter(node);}}}三、如何使⽤1.关于引⽤using System.Linq;using System.Linq.Expressions;using LinqKit;还需要引⼊扩展类的命名空间2.使⽤⽰例Expression<Func<User, bool>> pre;pre = s => s.NickName.Contains("李");pre = pre.Or(s => s.NickName.Contains("陈"));pre = pre.And(s => panyId == "1");var data = _userRepository.GetAll().AsExpandable().Where(pre);。

php cmd apcu用法

php cmd apcu用法

PHP CMD APCu用法什么是APCu?APCu(Alternative PHP Cache)是一个PHP扩展,它提供了一个用于缓存数据的API。

它可以在内存中存储数据,以提高PHP应用程序的性能。

APCu是一个轻量级的缓存系统,它专门用于缓存PHP数据,例如变量、对象和函数。

安装APCu扩展在使用APCu之前,首先需要安装APCu扩展。

下面是在Linux系统中安装APCu扩展的步骤:1.检查PHP版本:首先,确保你的PHP版本是5.5或更高版本。

你可以通过运行以下命令来检查PHP版本:php -v2.安装APCu扩展:使用以下命令安装APCu扩展:pecl install apcu如果提示找不到pecl命令,你需要先安装pecl命令行工具。

对于Debian/Ubuntu系统,可以使用以下命令安装:sudo apt-get install php-pear3.激活APCu扩展:编辑PHP配置文件(通常位于/etc/php.ini或/etc/php.d/apcu.ini)并添加以下行:extension=apcu.so保存并关闭文件。

4.重启Web服务器:重启你的Web服务器以使配置更改生效。

对于Apache服务器,可以使用以下命令重启:sudo service apache2 restart对于Nginx服务器,可以使用以下命令重启:sudo service nginx restart现在,APCu扩展已经成功安装并激活了。

使用APCu缓存数据一旦安装了APCu扩展,你就可以开始使用它来缓存数据了。

APCu提供了一组函数,用于操作缓存。

存储数据要将数据存储到APCu缓存中,可以使用apcu_store()函数。

以下是使用apcu_store()函数存储数据的示例:$data = 'Hello, APCu!';$key = 'greeting';apcu_store($key, $data);在上面的示例中,我们将字符串Hello, APCu!存储在了一个名为greeting的键下。

php增加扩展so库

php增加扩展so库

php增加扩展so库 项⽬需求: 之前做项⽬遇到了⼀个需求:需要对接c/c++封装的so库,需要⽤php调⽤so库⾥⾯的⽅法。

 需求设想: 接触之初,脑海中脑补了下这个需求应该怎么整:没搞过啊,是不是把这个so库⽂件当做类,然后引⽤这个类再执⾏类⾥的⽅法。

(哈哈,很单纯⽆知的想法) 拿到so库后,查看了下,这封装过了的,咋引⽤~~。

查找⼀番后确定了⼤致的实施⽅法:增加php底层扩展⽅法,在扩展中引⼊库进⾏编译,编译成功⽣成php的引⽤扩展库,即可直接调⽤扩展库⽅法。

 实施测试阶段: 因为是引⽤c++的扩展库,库⾥引⽤和opencv的⼀些扩展库,⾥⾯需要很多配套的扩展,⼀个萝⼘⼀个坑,慢慢得趟出了很多坑,也获得了很多萝⼘。

萝⼘1:编译中报出各种错,不是缺少这个扩展,就是缺少那个扩展,就得针对于各种缺少的各种安装,此过程中了解了很多扩展库的作⽤。

萝⼘2:系统性得了解了巩固了linux的各种命令,重温了下C语⾔的语法与so库的封装。

实施阶段: 因为是需要⽤到php的源码增加扩展,先现在⼀份和当前php环境版本⼀致的源码。

下载地址: /downloads.php 将so库的存放路径写⼊配置中保存(各个配置的环境路径也许会有不同)打开cd /etc/ld.so.conf.d/ vim local.conf将so库存放路径/usr/local/lib写⼊保存 解压源码包(路径没要求)打开解压后的⽂件夹⾥的 ext⽂件夹,⾥⾯储存的是php⾃带的⼀些扩展⽬录,我们所要做的就是在⾥⾯再加⼀个我们需要的扩展。

开始创建⼀个模块test:执⾏命令:sudo ./ext_skel --extname=test 执⾏完会⽣成⼀个test的模块⽂件夹,打开test cd test 需要修改⼀些⽂件给需要修改的⽂件权限sudo chmod 777 config.m4 php_test.h test.c 1> 先修改 php_test.h 在声明⽅法下增加⼀个你⾃⼰定义的调取so库的⽅法如增加 test_add ⽅法: PHP_FUNCTION(confirm_suone_compiled); /* For testing, remove later. */ PHP_FUNCTION(test_add); //声明此函数(后⾯test.c中将⽤到) 2> 修改config.m4: PHP_ARG_WITH(test, for test support, //放开此两⾏的注释 __WITH 是引⽤的外部库⽂件⼜引⽤了其他链接库如果是引⽤单⼀的⼀个so⽂件,即放开 __ENABLE那两⾏ [ --with-test Include test support]) 在底部引⼊扩展⽬录及⽂件,例如需添加的so库名称为 gettime.so PHP_ADD_LIBRARY_WITH_PATH(gettime,/usr/local/lib,TEST_SHARED_LIBADD) PHP_ADD_LIBRARY_WITH_PATH(opencv_core,/usr/local/lib, TEST_SHARED_LIBADD) //引⼊⼀个opencv的链接库为例此库都放在 /usr/local/lib ⽂件夹下 PHP_SUBST(TEST_SHARED_LIBADD) //加⼊此句表⽰此库为共享库 PHP_NEW_EXTENSION(test, test.c, $ext_shared) 3> 修改 test.c⽂件(主函数⽂件) const zend_function_entry test_functions[] = { PHP_FE(confirm_test_compiled, NULL) /* For testing, remove later. */ PHP_FE(test_add,NULL) //加⼊此⽅法 {NULL,NULL,NULL} // PHP_FE_END /* Must be the last line in suone_functions[] */ }; 在⽂件底部,写函数调⽤⽅法 PHP_FUNCTION(test_add){ //test_add 是上⾯申明的⽅法名 char *name=NULL; //定义类型 long len; long uid; If(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &name,&len ,&uid) == FAILURE) { return; } char *data = Gettime(name,uid); //直接请求外部库gettime.so的 Gettime函数,传递参数,获取值 RETURN_STRINGL(data,strlen(data)+1,1); //返回结果值 } 每个库的请求⽅法和参数结合不相同,具体根据外部库所需要的参数为准 4> ⽂件修改完毕,现在执⾏编译命令,⽣成php可直接执⾏的底层库 sudo phpize sudo ./configure --with-php-config=/usr/bin/php-config --with-test sudo make test (先执⾏test 如果此步骤返回success,即可正常执⾏下⾯的安装,如果报错,先处理⾄没错) sudo make install (安装完之后会⽣成⼀个新的库test.so ⽂件,将此⽂件复制到php的扩展库⽬录中 /usr/local/lib) 将 test.so 写⼊到php.ini的配置中 Extension=test.so 如果在之前的配置中引⼊了整个库⽂件⽬录,就不需要单独引⼊此⽂件 重启php服务 测试结果 新建⼀个test.php ⽂件 <?php print_r(test_add("so库测试",1)); //test_add为扩展主⽅法⾥所写⼊的⽅法名,即可链接调⽤gettime.so的库⽂件⾥的⽅法了 ?>。

php扩展开发参考手册

php扩展开发参考手册

php扩展开发参考手册摘要:1.PHP 扩展开发简介2.PHP 扩展开发环境搭建3.PHP 扩展开发流程3.1 创建扩展项目3.2 编写扩展代码3.3 配置扩展3.4 测试与调试4.PHP 扩展开发技巧4.1 函数与类4.2 内存管理4.3 错误处理4.4 国际化支持5.PHP 扩展开发实例5.1 创建一个简单的扩展5.2 实现一个文件上传扩展6.PHP 扩展开发常见问题及解决方法7.PHP 扩展开发总结正文:PHP 是一种广泛应用于Web 开发的脚本语言,通过扩展开发,可以为PHP 增加新的功能和特性。

本文将详细介绍PHP 扩展开发的各个方面,帮助开发者更好地进行PHP 扩展开发。

## PHP 扩展开发简介PHP 扩展开发是指使用C 或C++等编程语言,为PHP 内核编写扩展模块,从而实现新的功能或改进现有功能。

通过扩展开发,开发者可以自定义PHP 的行为,提高开发效率和运行性能。

## PHP 扩展开发环境搭建进行PHP 扩展开发前,需要先搭建开发环境。

建议使用具有C/C++编译器的Linux 系统,如Ubuntu。

安装好PHP 及其开发工具包(如PHP-DEV、PHP-GTK 等),并配置好相关的开发环境。

## PHP 扩展开发流程### 1.创建扩展项目首先,创建一个新的目录,用于存放扩展代码。

在该目录下创建一个名为`ext_info.ini`的配置文件,用于描述扩展的基本信息,如名称、版本等。

### 2.编写扩展代码根据需求,编写扩展的核心代码。

通常包括以下部分:- 初始化:在PHP 启动时,扩展需要进行一些初始化工作,如注册事件处理器、初始化数据结构等。

- 功能实现:实现扩展的核心功能,如自定义函数、类等。

- 资源释放:在PHP 结束时,扩展需要释放资源,如关闭文件、释放内存等。

### 3.配置扩展修改`ext_info.ini`文件,添加扩展的配置项。

这些配置项将决定扩展在PHP 中的加载方式、名称等。

Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程

准备工作在完成IIS上进行PHP5安装配置工作之前,首先需要下载PHP5.2和PHP5.3,PHP5.3以php-5.3.2-Win32- VC9-x86为准,具体下载地址请参考PHP环境搭建:Windows7 Apache+PHP+Mysql一文。

Windows7 IIS7安装在进行IIS7 PHP安装配置之前,首先需要安装IIS7,Windows7默认并没有安装IIS,安装过程如下:首先进入控制面板,点击程序和功能,再点击左侧打开和关闭Windows功能,勾选Internet Information Services可承载的Web核心,确定安装。

在完成安装后,在勾选Internet信息服务,选择安装必要的IIS功能,注意由于在配置PHP5.2和PHP5.3 时,IIS7中是以ISAPI和FastCgi方式配置PHP的,所以Cgi和ISAPI 扩展和ISAPI筛选器务必勾选(此处由于我首先以ISAPI方式配置PHP5.2,我没有勾选Cgi),如图:安装IIS7在完成Windows7 IIS7的安装后,即可在控制面板中的管理工具中看到Internet信息服务管理器选项。

如何在Windows7 IIS7上以ISAPI方式配置PHP5.2?IIS7 PHP5.2配置第一步:php.ini配置解压php-5.2.13-Win32-VC6-x86.zip,重命名为php52iis,将其复制到C盘根目录下,将php.ini- list文件名更改为php.ini,打开php.ini进行配置,php.ini的配置与PHP环境搭建:Windows7 Apache+PHP+Mysql基本一样,注意extension_dir的目录指向必须准确,即1 extension_dir = "C:/php52iis/ext"另外在PHP5.2版本中没有date.timezone选项,所以无需设置。

在完成PHP5.2中php.ini的配置工作后,将其复制至C:\WINDOWS目录下,同时将PHP52iis目录下的libmcrypt.dll,libmysql.dll,php5ts.dll三个文件到C:/windows/System32目录下。

vscode php 创建方法

vscode php 创建方法

vscode php 创建方法如何在VSCode中创建PHP方法在软件开发中,函数是一种用于封装可重用代码的重要工具。

特别是对于PHP开发者来说,创建和使用函数是非常常见的任务。

在本文中,我们将一步一步地介绍如何在Visual Studio Code(简称VSCode)中创建PHP 方法(函数)。

步骤一:安装VSCode IDE首先,你需要在你的计算机上安装VSCode IDE。

VSCode是一个轻量级的、跨平台的代码编辑器,它提供了丰富的扩展性和功能,适用于各种编程语言。

你可以从VSCode官方网站上下载适用于你的操作系统版本。

步骤二:安装PHP扩展在VSCode中,你需要安装适用于PHP的扩展,以便在编辑和运行PHP 代码时获得更好的体验。

你可以点击VSCode左侧的“扩展”图标,然后在搜索框中输入“PHP”,选择并安装官方提供的PHP扩展。

步骤三:创建PHP文件在VSCode中,你需要创建一个新的PHP文件以编写你的方法。

你可以使用快捷键Ctrl+N(在Windows上)或Cmd+N(在Mac上)来创建一个新文件。

然后,你需要将文件保存为`.php`文件扩展名。

步骤四:编写PHP方法在你的PHP文件中,你现在可以开始编写你的方法。

首先,你需要定义一个方法名和方法的参数列表(如果有的话)。

例如,你可以编写一个用于计算两个数相加的方法,如下所示:phpfunction add(num1, num2) {return num1 + num2;}在上述示例中,我们创建了一个名为`add`的方法,接受两个参数`num1`和`num2`。

方法体中的`return`语句将两个参数相加并返回结果。

步骤五:保存和运行PHP文件一旦你完成了方法的编写,你可以将文件保存起来。

你可以使用Ctrl+S (在Windows上)或Cmd+S(在Mac上)进行保存。

在保存之后,你可以通过点击菜单栏上的“终端”选项,选择“新建终端”来打开一个终端窗口。

PHP的性能优化方法总结

PHP的性能优化方法总结

PHP的性能优化⽅法总结什么情况之下,会遇到PHP性能问题?1:PHP语法使⽤不恰当。

2:使⽤PHP语⾔做了它不擅长的事情。

3:使⽤PHP语⾔连接的服务不给⼒。

4:PHP⾃⾝的短板(PHP⾃⾝做不了的事情)。

5:我们也不知道的问题?(去探索、分析找到解决办法,提升开发境界)。

对线上站点做压⼒测试的时候,我们⼀定要将请求数和并发数,特别是并发数要设置的⽐较低,我们不能对线上的⽹站造成压⼒问题,不管是⾃⼰的还是别⼈的。

PHP性能问题⼀般不会超过占整个项⽬性能的50%,⼀般在30%~40%。

PHP性能问题的解决⽅向,三个层级1:PHP语⾔级的性能优化,指的是PHP语法基本功能,这部分优化⽐较简单易见、快速可⾏,⽐较快速看到效果。

a:少写PHP的代码,多⽤PHP⾃⾝能⼒解决问题。

性能问题⾃写代码冗余较多,可读性不佳,并且性能低,如代码很长很长...PHP代码越长PHP的执⾏效率越慢。

为什么性能低?PHP代码需要解析编译为C语⾔,底层C语⾔⼜要编译成汇编语⾔机器语⾔才能执⾏,这个过程在每次请求过来之后都要处理⼀遍,所以开销很⼤(项⽬变⼤的话...)。

解决⽅法:多使⽤PHP内置的变量、常量、函数。

我们⽤PHP代码实现的功能和使⽤PHP内置的函数实现的同样功能差别是有的。

b:PHP内置函数的性能优劣。

情况描述PHP内置函数之间依然存在快慢差别;少⽤PHP魔术⽅法;建议:多去了解PHP内置函数的执⾏实现复杂度。

测试⽅法:⽐较效率测试,如⽤microtime()函数,取差值,精确到毫秒级别;Linux的time命令可以查看开销。

c:产⽣额外开销的错误抑制符号“@”,最好别⽤(不管是性能优化和项⽬的健壮性等⽅⾯)。

@的逻辑是在代码前和代码结束后增加了Opcode,Opcode的作⽤就是忽略报错,其实就是相当于增加了error_reporting设置,等级报错为忽略(vld扩展可以查看被隐藏的Opcode);d:合理使⽤内存。

给PHP安装和开启curl扩展

给PHP安装和开启curl扩展

给PHP安装和开启curl扩展安装某些PHP源码如CMSTOP时需求系统开启curl扩展,这需要修改PHP的配置,在Windows 中只需简单三步。

一、window下安装php_curl支持1.将PHP安装文件夹下的三个文件php_curl.dll(可能在ext文件夹中),libeay32.dll,ssleay32.dll 复制到 %windir%/system32下;2.打开php.ini(可能在PHP环境的安装目录下,默认在c:\WINDOWS目录下),将;extension=php_curl.dll头部的分号去掉;3.重启php的服务(apache或者IIS),如重启IIS,运行iisreset即可。

二、linux中php如何安装curl扩展如果php已经在系统编译好,后来又需要添加新的扩展,一种方式就是重新完全编译php,另一种方式就是单独编译扩展库,以extension的形式扩展。

情况一:全新安装php 和curl首先下载curl安装包(我的php是4.4.4的,下载最新的curl 7.16 不能使用,最后下载7.14的才可以,下载要注意一下版本)然后安装cURL# tar -zxf (此处填下载的curl包名称)# ./configure –prefix=/usr/local/curl# make; make install安装php时,只要打开开关–with-curl=/usr/local/curl就可以了。

php要求curl的目录要有include和lib目录,并且include下要有easy.h和curl.h 两个文件,lib下要有libcurl.a。

经编译后include下的文件有了,但是lib目录下可能还没有。

原来生成到lib/.libs目录下,所以要copy到lib目录。

情况二:已经安装了php,现在需要添加这个扩展进入安装原php的源码目录,(如果删了,但是还有原来的压缩文件的话,重新解压就行)cd ext/curlphpize ./configure –with-curl=DIR (可以不写dir,如果你的curl安装时没有指定目录)make就会在PHPDIR/ext/curl/moudles/下生成curl.so的文件。

PHP的CURL功能扩展模块

PHP的CURL功能扩展模块

PHP的CURL功能扩展模块1. 什么是CURL功能模块CURL是利用URL语法在命令行方式下工作的开源文件传输工具。

它被广泛应用在liinux、unix系统中,并且有DOS和win32、win64下的移植版本。

例如:使用命令: curl //直接抓取网页内容而在命令行可以完成的CURL操作,PHP通过默认支持的CURL扩展,使用PHP的功能函数也都能实现。

2.为什么使用CURL模块页面抓取、数据采集、网络爬虫,虽然叫法不同,但是原理一样,都是从别人网站上获取内容。

大多数时候因为想偷懒,采用php中简单的fopen(),file_get_contents()等文件操作函数去暴力获取直接访问的页面数据。

如果想要抓取有页面访问控制的页面,或者需要登陆以后才能访问的页面,这种方法就行不通了。

因为文件操作函数不能定义客户端描述的文件请求头信息,也不能通过GET、POST 等不同的请求方式来获取内容。

CURL是利用URL语法在命令行运行方式下工作的文件传输工具,支持很多协议,如http、ftp、telnet等。

为了解决这个问题,我们可以使用php的扩展库CURL,通常是默认在安装包中的,这样就可以用它来获取其他网站的内容。

3.CURL可以做什么?3.1模拟POST、GET请求.3.2实现接口对接(API),数据传输,例如微信公众平台的开放接口访问。

3.3实现模拟Cookie等,登陆状态下才可以操作的一些属性。

4.PHP的CURL模块的基本使用4.1.开启CURL扩展extension=php_curl.dll4.2使用CURL的基本步骤初始化//创建一个新的curl资源赋值给变量$ch$ch = curl_init();设置变量//设置URL,同样方式也可以设置其他选项curl_setopt($ch, CURLOPT_URL, "");执行并获取结果//执行,获取url内容并输出到浏览器curl_exec($ch);释放CURL资源//释放资源curl_close($ch);如果希望获取内容不输出,可以使用CURLOPT_RETURNTRANSFER参数,并将其内容设置为非 0 或者true,表示将curl_exec()获取的信息以字符串返回,而不是直接输出。

如何使用C++开发WPS Office插件

如何使用C++开发WPS Office插件

_IDTExtensibility2 对 象 , 然 后 调 用 _IDTExtensibility2.OnConnection 。 插 件 可 以 在 OnConnection 中做一些初始化操作,如添加菜单项、工具栏按钮等。OnConnection 之后, OnStartupComplete 将被调用,至此插件加载完成。 WPS 关闭时,插件平台先后调用 OnBeginShutdown 和 OnDisconnection 。 目 前 , WPS Office 插 件 平 台 不 会 调 用 插 件 的 _IDTExtensibility2.OnAddInsUpdate 方法。插件实现一个空的 OnAddInsUpdate 就可以了,即 直接返回 S_OK,应避免在其中编写其他代码,以免将来引起兼容问题。 1.1. _IDTExtensibility2.OnConnection virtual HRESULT __stdcall OnConnection ( /*[in]*/ IDispatch * Application, /*[in]*/ enum ext_ConnectMode ConnectMode, /*[in]*/ IDispatch * AddInInst, /*[in]*/ SAFEARRAY * * custom); OnConnection 方法一共带有 4 个参数。第一个参数 Application 是宿主程序对象;第二个参 数是 ext_ConnectMode 类型的枚举值;第三个和第四个参数目前没有使用,插件实现 OnConnection 时必须忽略这两个参数。 ext_ConnectMode 定义了 4 个常量值,如下所示。 enum ext_ConnectMode { ext_cm_AfterStartup = 0, ext_cm_Startup = 1, ext_cm_External = 2, ext_cm_CommandLine = 3 }; 其中,ext_cm_Startup 和 ext_cm_AfterStartup 是插件平台加载 COM 插件时传入 OnConnection 的。ext_cm_External 和 ext_cm_CommandLine 目前没有用到。 a. ext_cm_Startup WPS 启 动 时 , 插 件 平 台 会 立 即 加 载 COM 插 件 , 调 用 OnConnection(Application, ext_cm_Startup)。 b. ext_cm_AfterStartup 用 于 安 装 插 件 过 程 。 安 装 插 件 时 , WPS Office 插 件 平 台 会 加 载 插 件 , 并 调 用 OnConnection(Application, ext_cm_AfterStartup),此时插件要做两件事情,即安装后的初始 化以及加载初始化。如果插件安装以后不需要进一步的配置等初始化工作,那么对这个插件 而言,不需要区分 ext_cm_AfterStartup 和 ext_cm_Startup。 一般情况下,插件会在 OnConnection 中添加菜单项或者工具栏按钮等功能入口。在 WPS Office 添加的菜单项或者工具栏按钮,分为“临时”和“持久”两种类型。顾名思义,带有“临时” 属性的菜单项或工具栏按钮,在 WPS Office 重新启动以后就不存在了;带有“持久”属性的 菜单项或工具栏按钮,在 WPS Office 重新启动以后,仍然存在。 插件添加菜单项和工具栏按钮时,推荐使用“临时”的菜单项和工具栏按钮,在宿主程序关闭 时,插件也不要调用 API 删除菜单或工具栏按钮。插件添加菜单项或工具栏按钮时,建议 先检查这些菜单或按钮是否已经存在,以免重复添加。

php it用法-概述说明以及解释

php it用法-概述说明以及解释

php it用法-概述说明以及解释1.引言1.1 概述PHP是一种广泛应用于Web开发领域的服务器端脚本语言,它可以嵌入HTML中使用,也可以与各种数据库进行交互,是开发动态网页的首选工具之一。

PHP的语法基于C语言,但更简单易学,适合初学者上手使用。

PHP具有许多特点,如开源免费、跨平台、易于扩展等,使得其在Web开发中得到广泛应用。

由于其灵活性和强大的功能,PHP已成为许多大型网站和应用程序的首选开发语言。

本文将介绍PHP的基本概念和特点,探讨其在Web开发中的应用,以及与其他编程语言的比较。

通过对PHP的深入了解,读者可以更好地把握其在未来的发展方向,并获得使用PHP的建议和注意事项。

1.2 文章结构文章结构部分主要包括文章的整体结构和各章节的内容安排。

具体来说,本文的结构包括引言、正文和结论三个部分。

- 引言部分包括概述、文章结构和目的。

在概述中简要介绍了PHP的基本概念和特点,引出了文章的主题。

文章结构部分则介绍了文章的整体结构,包括各章节的内容安排。

目的部分表明了撰写此文的目的,即探讨PHP的用法及重要性。

- 正文部分涵盖了PHP的基本概念和特点、在Web开发中的应用以及与其他编程语言的比较。

这部分内容将有助于读者全面了解PHP的用法和特点,以及在实际项目中的应用场景。

- 结论部分包括对PHP的重要性和灵活性的总结、探讨PHP在未来的发展方向以及提出使用PHP的建议和注意事项。

通过对PHP的分析和总结,读者可以更好地了解PHP在现代Web开发中的地位和未来的发展趋势,以及如何更好地利用PHP进行开发。

总的来说,文章结构清晰,内容丰富,能够帮助读者系统地了解和掌握PHP的用法和重要性。

1.3 目的本文的目的是探讨PHP在IT领域中的应用和用法。

通过对PHP的基本概念和特点进行介绍,我们可以深入了解这门编程语言的特点和优势。

同时,通过分析PHP在Web开发中的应用,可以帮助读者更好地理解如何利用PHP来构建高效的网站和应用程序。

php如何安装CURL扩展

php如何安装CURL扩展

php如何安装CURL扩展php安装curl扩展方法一安装curlwget http://curl.haxx.se/download/curl-7.17.1.tar.gz tar -zxf curl-7.17.1.tar.gz./configure --prefix=/usr/local/curlmake & make install安装php只要打开开关 --with-curl=/usr/local/curl就可以了。

这个扩展库还是非常棒,是fsockopen等等相关的有效的替代品。

php安装curl扩展方法二进入安装原php的源码目录,cd extcd curlphpize./configure --with-curl=dirmake & make install就会在phpdir/ext/curl/moudles/下生成curl.so的文件。

复制curl.so文件到extensions的配置目录,修改php.ini就好了extension=curl.so第一种方法试了n遍一直在失败中,于是放弃。

使用第二种方法安装,phpize提示找不到,其实命令在/usr/local/php/bin/目标下: # /usr/local/php/bin/phpize./configure --with-curl=dir需要指定php的配置路径,应该如下:# ./configure --with-php-config=/usr/local/php/bin/php-config--with-curl=dir注:上面的资料中错把--with-php-config写成了--with-php-php-config然后就是编译安装:# make# make install到这里会提示生成文件curl.so的路径:/usr/local/php/lib/php/extensions/no-debug-non-zts-20060 613/进入到这个路径下,复制curl到extension_dir目录下(本目录路径可以看phpinfo里直接看php.ini),修改php.iniextension=curl.so# /usr/local/php/bin/php -m如果没成功按里面提示把curl.so 拷贝到/usr/lib/php/modules下再执行上面的命令。

exeoutput for php的使用手册

exeoutput for php的使用手册

exeoutput for php的使用手册一、引言exeoutput for php是一个功能强大的PHP扩展,它为开发人员提供了在PHP应用程序中执行外部命令和脚本的能力。

使用exeoutput for php,您可以在PHP脚本中轻松地调用外部程序,并将输出结果进行处理和显示。

本使用手册将指导您如何安装、配置和使用exeoutput for php扩展,以便在您的PHP应用程序中实现自动化和集成外部工具。

二、安装与配置1. 安装exeoutput for php扩展要使用exeoutput for php扩展,您需要先将其安装到您的PHP环境中。

您可以从官方网站或GitHub仓库下载最新的exeoutput for php 扩展版本,并根据您的操作系统和PHP版本进行适当的安装。

2. 配置PHP环境安装完成后,您需要在您的PHP配置文件(php.ini)中启用exeoutput for php扩展。

找到以下行并取消注释(去掉前面的分号):```makefileextension=exeoutput.so```保存并关闭php.ini文件后,重新启动您的Web服务器以使更改生效。

三、使用exeoutput for php执行外部命令1. 创建执行计划在您的PHP代码中,您需要创建一个执行计划对象,用于定义要执行的外部命令和相关参数。

使用exeoutput for php提供的API函数,您可以轻松地创建执行计划。

以下是一个简单的示例:```php$executor = new \ExeOutput\Executor();$command = 'ls -l'; // 要执行的命令$executor->setCommand($command);```2. 执行命令并获取输出结果一旦创建了执行计划对象,您可以使用`execute()`方法来执行命令并获取输出结果。

以下是一个完整的示例:```php$executor = new \ExeOutput\Executor();$command = 'ls -l'; // 要执行的命令$executor->setCommand($command);$output = $executor->execute(); // 执行命令并获取输出结果```在上述示例中,`$output`变量将包含命令的输出结果。

SWIG的使用教程

SWIG的使用教程

使用Swig封装C++到Python的心得--01 收藏一.简述前一段时间由于工作需要重点学习了一下用Swig来封装C++代码到Python的知识,期间遇到一些问题,也有一些心得体会,特此记录。

本文只涉及封装C++到Python,其他诸如封装到Java等没有涉及。

假设读者对Python和C++这两种语言都有一定的了解,到底要什么程度,我也说不清。

本文的所有知识均来自于Swig的帮助文档《SWIGDocumentation.pdf》和我的实践,不一定完全正确。

二.环境搭建我不想忽略细节,所以我尽量详细,。

我下载swigwin-1.3.33.zip,在H:\3rdTools目录下直接解压缩,即把swig安装到H:\3rdTools\swigwin-1.3.33目录中,将H:\3rdTools\swigwin-1.3.33加入VC的可执行文件路径。

我使用的是Visual Studio 2005,我下载python-2.4.4.msi,安装到H:\3rdTools\Python24目录,并在PA TH环境变量中加入H:\3rdTools\Python24,将H:\3rdTools\Python24\include加入VC的Include路径,将H:\3rdTools\Python24\libs加入VC的Library路径。

三.简单例子让我们从一个Helloworld的例子入手,在Windows上制作一个DLL库,并将其封装成Python的一个Module,然后在Python中import这个Module,调用其中提供的函数,从而显示出“HelloWorld!”。

新建一个Win32 Console Application,注意在Application Settings中选择DLL以及空项目。

完成后将工程的配置改成release(主要是因为我用的Python库是Release版的,而非Debug版的)。

具体工程参见practise_swig\HelloWorld,首先向工程里添加HelloWorld.hpp和HelloWorld.cpp文件,里面的内容就是基本的HelloWorld函数。

php安装扩展的几种方法

php安装扩展的几种方法

php安装扩展的⼏种⽅法推荐操作系统:windows7系统、PHP5.6、DELL G3电脑1、使⽤phpize命令为PHP扩展库准备转换环境。

这样就会⽣成extname.so,并⾃动地放在PHP扩展库⽬录下。

您需要调整php.ini,添加extension=extname.so,然后才能使⽤这个扩展库。

$ wget extension.tar.gz$ tar ...$ cd php-7.1/extension/extname$ /usr/local/php/bin/phpize$ ./configure$ make# make install2、下载并编译extname的源代码,然后在extname.so中安装extension_dir。

因此可以通过php.ini加载extname.so。

# 查找扩展$ pecl search extname# 安装扩展$ pecl install extname# 卸载扩展$ pecl uninstall extname3、安装PHP扩展yum命令⾃动配置php.ini⽂件,安装后直接使⽤,⾮常⽅便。

缺点是apt或yum中没有对应的扩展安装包。

~# yum install -y php-pecl-memcachedReading package lists... DoneReading state information... Done...在扩展的安装⽅⾯,我们尝试过mysql的配置,有的⼩伙伴就会引发思考,是否能⽤多种⽅法对php进⾏扩展的安装。

以上就是php安装扩展的三种⽅法,⼤家可以先就基础的扩展⽅法进⾏学习,然后选择适合⾃⼰的⽅法加强记忆。

⽂章转⾃:。

如何用C#开发Excel扩展插件

如何用C#开发Excel扩展插件

如何⽤C#开发Excel扩展插件毫⽆疑问,微软公司的Excel是⼀个⾮常成功的应⽤软件。

它不仅本⾝功能强,⽽且还允许⽤户根据⾃⼰需要进⾏再开发以扩展其功能。

传统上,我们可以⽤C/C++语⾔或者VBA对Excel进⾏扩展性开发。

C/C++功能强⼤,但是开发⼯作⽐较复杂;VBA使⽤起来⾮常⽅便,但是功能有限。

.NET的推出为我们提供了⼀种能够结合这两者长处的再开发⼿段。

基于.NET的解决⽅案可以利⽤所有.NET开发平台提供的强⼤功能,例如多线程编程、分布式计算等。

这都是VBA难以做到的,事实上即使使⽤C/C++,我们也很难实现这些功能。

不仅如此,我们还可以充分利⽤Visual Studio的整体开发环境,例如版本控制之类的功能。

这些功能对于团队开发⾮常重要,但是在VBA开发环境下则⾮常困难。

本⽂将以C#为例介绍对Excel进⾏再开发的⽅法和技巧。

我们通常有三种⽅法来对Excel进⾏再开发:⼀是扩展插件(AddIn)。

这是开发Excel⽤户⾃定义函数的⾸选。

⼆是VSTO(Visual Studio Tool for Office)。

这是开发Excel内嵌功能的⾸选(例如按钮、菜单等等)。

三是RTD(Real Time Data)。

这是开发Excel实时数据应⽤程序的⾸选。

尽管它们针对的⽤途不同,但是开发的基本⼿段和过程是⾮常类似的。

在技术细节上,这三种⽅法主要的不同是需要实施不同的接⼝。

在本⽂中,我们将主要介绍利⽤C#开发Excel扩展插件的⽅法。

读者可以依次类推在需要的时候开发其它两类的程序。

⾸先,创建⼀个C#库程序(library)并指定这个类程序库“控件可见”(Com Visible)。

这通常是通过项⽬属性、Assembly属性来指定的,如下图所⽰。

(注意不同版本的Visual Studio可能对话框的样⼦不同)。

为了⽅便起见,我们还可以让程序⾃动注册成控件。

这可以通过项⽬属性、编译属性来指定,如下图所⽰。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺便,在本文中我们也会看一下在PHP5中怎么把C++类影射到PHP中。文章中的例子可以在PHP4和PHP5的环境下使用,但是有一个小小的问题:扩展的PHP类只能在PHP5中使用。:P
基本上,我们会介绍怎么样为C++类创建一个可以在PHP4和PHP5下使用的结构化接口,及可以在PHP5下使用的对象化接口。
在结构化的接口中,我们会用类似以下的PHP代码来使用resources:
$m = myclass_new();
myclass_set_string($m, 'hello world!');
var_dump(myclass_get_string($m));
>
PHP_NEW_EXTENSION(php5cpp, php5cpp.cpp, $ext_shared)
fi
注意其中的PHP_REQUIRE_CXX(),和php5cpp.c 已经变成了 php5cpp.cpp 了。
第4节.编写代码
修改完config.m4 后,你可以编写代码了。记住把php5cpp.c 修改成C++文件的名字。根据前边 config.m4的修改,在这里我们把它改成 php5cpp.cpp.
1 类MyClass
首先我们需要一个类。下边是一个只有一个私有属性和几个公有方法的简单的类。
以下是这个类的声明头文件 myclass.h:
#ifndef __MYCLASS_H__
#define __MYCLASS_H__
#include
现在你可以开始编写你的代码了。但是你如果现在编译这个扩展代码的话,可能会生一个so,并且不会产生任何编译错误,但是并不能在PHP中使用。如果你把它静态编译进PHP,则会产生连接错误。这是因为C和C++的变量空间的不一致引起的 (PHP是使用C来编写,你的扩展使用C++来编写) 。
修改的方法就是,你要告诉你的扩展模块,将把一些PHP API函数当成C函数来对待(他们是用C来写的),而不是当成C++。
这样,在$PHP_HOME/ext/php5cpp下,我们已经有了一个基本的PHP扩展模块架构。唯一的问题是,它是为C搭建的,而不是为C++。
第3节.修改config.m4
现在我们要修改那个扩展模块的config.m4 文件以支持C++。
你不需要做太多的改动,要做的只是告诉编译PHP的系统,你的模块是使用C++的,而且需要连接C++标准库。下边是一个删去自动生成的注释后,php5cpp 扩展模块的config.m4文件的例子:
using namespace std;
class MyClass {
private:
string itsString;
public:
MyClass(string s = "default");
~MyClass();
string getString() const;
这里介绍一下。我们要用一个C++类做为例子,就叫做MyClass吧。在PHP术语中,把它叫做一个resource(资源)。PHP常使用这类的东西,如数据库的连接就是resource,它也可能是一个指向实际resource的struct(结构)。在C++中,class 实际上是struct的一个近义词(struct默认为public,classe默认为private --仅这个区别而已)。
}
.
.
.
#ifdef COMPILE_DL_PHP5CPP
BEGIN_EXTERN_C()
ZEND_GET_MODULE(php5cpp)
END_EXTERN_C()
#endif
一般地,我们是用 BEGIN/END_EXTERN_C() 来包起头文件的那些内容,如对 ZEND_GET_MODULE(php5cpp)那样。但是在引用声明 BEGIN/END_EXTERN_C() 的 zend.h文件前,可以通过使用extern "C" 来达到相同的作用。
在面向对象式的接口中,一样可以使用PHP resources,不过已经被封装在一个PHP对象中了,如:
$m = new MyClass;
$m->setString('hello world!');
var_dump($m->getString());
>
bool setString(const string s);
};
#endif
下边是定义代码myclass.cpp:
#include "myclass.h"
MyClass::MyClass(string s)
{
itsString = s;
}
MyClass::~MyClass()
{
}
string MyClass::getString() const
{
return itsString;
}
bool MyClass::setString(const string s)
我在本文中有一些约定……
$PHP_HOME 是指你的PHP源代码的位置,如:你解开的PHP源代码包所放的位置。在我的系统中指的是:/home/jay/setup/php/php-x.x.x.
我们用来做例子的模块叫做php5cpp.
第2节.安装
在你用C++编写PHP扩展前,你先要搭建一个基本的扩展模块的架构。在UNIX下,你可以运行一个在 $PHP_HOME/ext 下叫做ext_skel 的shell脚本。先切换到 $PHP_HOME/ext 目录和执行那个shell脚本,并用 --extname 参数为你的扩展模块命名。
在Windows系统,可以使用Visual C++编译你的扩展模块。这也需要在的扩展模块的头部加上类似的声明:
#ifdef PHP_WIN32
#include
#include
பைடு நூலகம் #endif
这样你可以使得你的代码保持跨平台的特性。
第5节.编译扩展模块
PHP_ARG_ENABLE(php5cpp, for php5cpp support,
[ --enable-php5cpp Enable php5cpp support])
if test "$PHP_php5cpp" != "no" ; then
PHP_REQUIRE_CXX()
这个HOWTO是参考了一些实现得很好的PHP5扩展模块后写成的。如:Sqlite和SimpleXML扩展就是教导大家怎样在PHP5中扩展类的很好例子。但我的那些作品除外,只有cryptopp-php使用了很多特性。(还没有发布的PHP5将可以支持cryptopp-php 0.0.14。)
注意:PHP5目前仍在预发布状态,它可能还会做一些改动,尽管文档中的代码我已经在最新CVS版本的PHP 5环境下测试过,但在你读到这篇文章的时候可能还要做一些改动才能正常工作。如果文档中的代码在最新PHP 5中不能使用,请知会我,我会做相应的修正。
jay@monty ~ $ cd setup/php/php-5.x.x/ext
jay@month ext $ ./ext_skel --extname php5cpp
在Windows系统,目前PHP CVS代码中,可以使用位于 $PHP_HOME/ext 的 ext_skel_win32.php 的PHP脚本是。也许它会成为PHP5的一部分及被PHP 4.x的分支包含。但这只是我大胆的猜想,我并不知道会不会实现……
本文由Ackarlix贡献
用C++扩展PHP
作者:J Smith <dark_panda#> <jay#> 6-May-2004
翻译:fishchen <fishchen@> 10-Jun-2004
原文地址:/php5cpp/php5cpp/
这个文档简单介绍了怎么使用C++为PHP编写一个扩展模块。我已经被问及这个问题无数次了,所以我决定为后来者写一个简单的HOWTO。这篇文章只会说明一些要点和关键之处,如果你希望学习C++或PHP,请查阅其它的文档。
现在可以去编译扩展模块了。如果你想把它编译成静态模块(把它做为PHP的一个部分编译进PHP中去),去到PHP的根目录$PHP_HOME,删去 configure 文件和运行buildconf (译:需要libtool的支持)。
然后用你平常用的参数运行 configure 并加上--enable-php5cpp 项。运行 make clean, make, make install ,并完成其它的一些必要操作,如:重新编译Apache。
如果你想用动态链接库的方式编译扩展模块,到你的模块的目录下,运行phpize 命令(假设你已经安装了PEAR),它会为你的模块创建一个 configure 脚本。然后运行configure, make 和 make install。如果你想让你的模块自动加载,你要修改php.ini 以加载正确的文件。如:加上类似的一行:extension=php5cpp.so 。
现在你的PHP扩展模块已经编译好了。试着运行一下在模块目录下自动生成的php5cpp.php ,看看是不是一切正常?:)
第6节.将C++类影射到PHP中
目录
相关文档
最新文档