使用zephir开发php扩展的简单介绍

本文目录一览:

GitHub 上有哪些比较有趣的 PHP 项目?

Hprose for php 的加速扩展。其中所包含的 hprose 序列化和反序列化速度秒杀 php 内一切其它序列化扩展的速度,比如 php 序列化,json,msgpack,igbinary等。

cczep后缀是病毒文件吗

没事,您可以安装一个好的杀毒软件, 查杀病毒,据我所知,现在活着的杀毒软件都很是不错。您自己愿意用哪个,那个就好。

绝大部分的病毒扩展名是exe,有的脚本病毒的扩展名为VBS、VBE、JS、JSE、WSH、WSF。还有WORD文件(以DOC作为扩展名)也会携带病毒。

但其实很多病毒会在它真正的扩展名前添加其他的后缀来迷惑用户,如.jpg,.txt等,稍不注意就会中招,防范这招的方法就是使文件显示真正的扩展名,具体方法是:打开任意一个文件夹,选择“工具–文件夹选项–查看”,把“隐藏已知文件类型的扩展名”前的钩去掉。

Windows平台怎么安装Zephir

目录结构

Zephir是一个从Phalcon发展出来的项目,采用类似PHP语法的中间语言将代码编译为高性能的C扩展。zephir支持面向对象编程,变量类型除了类似PHP的动态类型,还可调用php内置或其他C扩展的函数。

PHP性能问题的解决方案

PHP自动加载文件数太多,函数调用超过1000次是许多php语言框架面临的问题,所以发展出来诸如Yaf, Swoole,Phalcon这些C语言扩展框架,或者类似workerman,reactphp,phpdaemon这些一次加载的框架。

总的来说减少PHP加载文件的个数,使用内置函数,减少损耗,以提升性能。相比之下,PHP扩展的框架性能还是要比PHP语言框架还要好不少。

什么是Zephir语言

以往PHP扩展的开发方式就是C/C++,SWIG,现在还多了一个选择:zephir,从Phalcon发展出来的项目,采用类似PHP语法的中间语言,将代码编译为高性能的C扩展。zephir支持面向对象编程,变量类型除了类似PHP的动态类型,还支持静态类型(有点像FackBook的hack了),而且可以调用php内置或其他C扩展的函数。

zephir编译流程

zephir整个编译流程是这样的:zephir和底层编译器自动进行编译优化的,当然也可以自己调整以获得更好的性能。在ubuntu下的安装如Zephir官方教程即可,在centos下的安装请点这里,也可以参考如下安装脚本:

su -c ‘yum update’

sudo yum install -y wget

sudo yum install -y vim

sudo yum install -y libtool

sudo yum install -y gcc

sudo yum install -y make

sudo yum install -y re2c

sudo rpm -Uvh

sudo yum install -y php55w

sudo yum install -y php55w-devel

sudo yum install -y php55w-json

sudo yum install -y git-core

git clone

cd /json-c

./autogen.sh

./configure

make

make install

git clone

cd zephir

./install -c

zephir help

Zephir安装完成如下图所示:

按照教程创建Zephir示例:

zephir init utils

cd utils

sudo vim utils/greeting.zep

greeting.zep代码如下:

namespace Utils;

class Greeting

{

public static function say()

{

echo”hello world!”;

}

}

Zephir编译安装

zephir build

注意,我在php5.3下面这么编译都不行,在php5.5/php5.4的版本基本没有碰到什么问题,然后更改php.ini:

sudo vim /etc/php.ini

在php.ini中加上以下内容

;zephir编译的扩展需要依赖json.so,需要提前加载

[json]

;如果php.ini中没有则加上,有则去掉;

extension=json.so

[utils]

extension=utils.so

查看php可用扩展命令:php -i

注意:如果提示undefined symbol: php_json_decode_ex in Unknown on line 0,则是php json扩展未加载,在php.ini打开就行了,加载json.so后又提示PHP Warning: Module json already loaded,则是已经在其他地方加载了该扩展,找出并注释掉。我的是在php.d下面的json.ini里面:

sudo vim /etc/php.d/json.ini

[json]

;已经在php.ini中加载了,为避免重复加载注释掉

;extension = json

加载成功后的效果:

创建一个php脚本来试一下

cd ~/utils

sudo vim greeting.php

greeting.php代码如下:

?php

echo UtilsGreeting::say(),”n”;

保存并运行如下图:

至此你的zephir编译的扩展已经成功了,赶紧翻译你的PHP代码去吧,参考这篇教程,计算斐波拉契数列在我的环境下是这样的:

性能提升还是挺明显的,而且在静态类型(强类型)下面还能比动态类型再提升。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/243964.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:59
下一篇 2024-12-12 12:59

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 用Python实现简单爬虫程序

    在当今时代,互联网上的信息量是爆炸式增长的,其中很多信息可以被利用。对于数据分析、数据挖掘或者其他一些需要大量数据的任务,我们可以使用爬虫技术从各个网站获取需要的信息。而Pytho…

    编程 2025-04-28
  • 如何制作一个简单的换装游戏

    本文将从以下几个方面,为大家介绍如何制作一个简单的换装游戏: 1. 游戏需求和界面设计 2. 使用HTML、CSS和JavaScript开发游戏 3. 实现游戏的基本功能:拖拽交互…

    编程 2025-04-27

发表回复

登录后才能评论