使用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/zh-hk/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

發表回復

登錄後才能評論