使用Zephir來快速編寫高效能PHP二進位制拓展

2021-09-14 04:03:18 字數 1806 閱讀 3436

這裡我們使用docker來安裝我們的開發環境,docker的安裝參考官方文件

首先就是根據我們目標php版本拉取對應的zephir編譯器映象,這裡我們php版本是7.0,於是使用這條命令:

docker pull phalconphp/zephir:7.0
然後建立/usr/local/bin/zephir檔案,檔案內容如下:

#!/usr/bin/env bash

docker_bin="$(which docker 2> /dev/null)"

# 5.4, 5.5, 5.6, 7, 7.0, latest

php_version=7.0

$ run -it --rm \

--privileged=true \

-e zend_dont_unload_modules=1 \

-v $(pwd):/zephir \

phalconphp/zephir:$ "$@"

ret=$?

if [ $ -ne 0 ]; then

errors="$(pwd)/compile-errors.log"

if [ -e $ ]; then

cat $

fifi

對這個檔案加上可執行許可權:

sudo chmod a+x /usr/local/bin/zephir
這樣我們就裝好了zephir編譯器:

$zephir version

0.9.7

這裡我們建立的專案名叫做utils,使用zephir腳手架初始化專案**:

zephir init utils
編寫乙個zep檔案:

$ cat utils/utils/greeting.zep 

namespace utils;

class greeting

}

$cd utils

$lsconfig.json ext utils

$zephir build

這樣我們就得到了我們編譯的so庫檔案:ext/modules/utils.so

通過php -i得到我們php拓展so檔案的安裝目錄是:/usr/lib/php/20151012/下面,於是2條命令完成cli模式php的拓展安裝,fpm模式也類似:

sudo \cp ext/modules/utils.so /usr/lib/php/20151012/

echo "extension=utils.so" | sudo tee /etc/php/7.0/cli/conf.d/30-zephir-dev.ini

最後我們,寫個php檔案來測試下這個so庫是否安裝成功:

$cat > test.php <<_eof

<?php

$obj = new utils\greeting();

var_dump($obj);

utils\greeting::say();

_eof

$php test.php

得到結果:

object(utils\greeting)#1 (0) 

hello world!

使用lesscss來編碼編寫css

lesscss使用方法有兩種 頁面新增乙個 less.js的檔案,css使用 style.less 檔案字尾來編寫,不過需要有伺服器的環境支援 在伺服器端使用node.js來編譯,node.js 使用 less的方法如下 先使用npm包管理器來安裝 npm install less 然後就可以使用命...

如何使用 C 方式來編寫驅動

這個問題可能會很無聊,而且覺得連這個題目都不好擬,但我還是以我的方式記下來了,覺得有用的朋友就儘管拿去用,不過我覺得可能性很小 ifdef cplusplus extern c endif 我把頭檔案前面加上extern c 編譯,果然成功了,原來就這麼簡單的說,不錯不錯,我現在終於可以在任何地方定...

使用rvm來快速部署nginx passenger

首先安裝passenger gem install passenger 然後使用passenger install nginx module 來安裝nginx和部署。因為這一步需要root許可權 因為要編譯nginx 可以用rvmsudo這個東西。這個東西真是個好東西 rvmsudo passeng...