偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

PHP FFI 允許在 PHP 腳本中嵌入 C 代碼

新聞 后端
Zend 的 Dmitry Stogov 通過允許 PHP 執(zhí)行嵌入式 C 代碼擴展了 PHP 的領(lǐng)域。 這將允許完全訪問本地 C 函數(shù),變量以及數(shù)據(jù)結(jié)構(gòu)。

 Zend 的 Dmitry Stogov 通過允許 PHP 執(zhí)行嵌入式 C 代碼擴展了 PHP 的領(lǐng)域。 這將允許完全訪問本地 C 函數(shù),變量以及數(shù)據(jù)結(jié)構(gòu)。

[[226718]]

解決方案 PHP FFI 作為實驗性擴展提供,但要求 PHP 7.3 的開發(fā)版本。 該解決方案還不能用于生產(chǎn),但它構(gòu)建在堅實的基礎(chǔ)之上,使用 FFI(外部函數(shù)接口)庫 libffi,允許高級語言生成代碼。

輸入:

  1. <?php$libc = new FFI(" 
  2.     int printf(const char *format, ...); 
  3.     char * getenv(const char *); 
  4.     unsigned int time(unsigned int *); 
  5.  
  6.     typedef unsigned int time_t; 
  7.     typedef unsigned int suseconds_t; 
  8.  
  9.     struct timeval { 
  10.         time_t      tv_sec; 
  11.         suseconds_t tv_usec; 
  12.     }; 
  13.  
  14.     struct timezone { 
  15.         int tz_minuteswest; 
  16.         int tz_dsttime; 
  17.     }; 
  18.  
  19.     int gettimeofday(struct timeval *tv, struct timezone *tz);     
  20. ", "libc.so.6");$libc->printf("Hello World from %s!\n", "PHP"); 
  21. var_dump($libc->getenv("PATH")); 
  22. var_dump($libc->time(null));$tv = $libc->new("struct timeval");$tz = $libc->new("struct timezone");$libc->gettimeofday($tv$tz); 
  23. var_dump($tv->tv_sec, $tv->tv_usec, $tz);?> 

將輸出:

  1. Hello World from PHP! 
  2. string(135) "/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/dmitry/.local/bin:/home/dmitry/bin"int(1523617815) 
  3. int(1523617815) 
  4. int(977765) 
  5. object(CData)#3 (2) { 
  6.   ["tz_minuteswest"]=> 
  7.   int(-180) 
  8.   ["tz_dsttime"]=> 
  9.   int(0) 

FFI 目前的數(shù)據(jù)結(jié)構(gòu)訪問還比較緩慢,比訪問原始 PHP 數(shù)組和對象的速度慢大約 4 倍?,F(xiàn)階段的速度雖然不太樂觀,但還是可以幫助節(jié)省內(nèi)存和資金的。

隨著 PHP FFI 后續(xù)的不斷優(yōu)化,性能還會不斷提升。

責任編輯:張燕妮 來源: react-etc.net
相關(guān)推薦

2009-03-23 13:08:07

PHP擴展PHPJavascript

2009-12-08 14:20:30

PHP CLI腳本

2009-12-02 19:51:54

PHP Switch語

2011-07-12 17:11:13

PHPSHELL

2011-06-15 16:58:26

PHP

2009-11-18 13:52:30

PHP shell腳本

2009-02-27 16:57:51

AJAX判斷請求

2011-02-24 09:41:25

PHP代碼

2011-06-15 15:16:54

Session

2009-11-30 16:24:24

PHP腳本

2017-07-27 14:21:40

phpPHP源碼分析hashtable

2015-09-07 13:55:53

PHPC++

2011-03-28 14:35:39

2010-07-17 00:55:48

PHP Telnet

2013-06-05 09:51:04

2009-11-25 10:52:22

PHP函數(shù)contin

2010-07-11 00:24:50

EclipsePHPPDT

2021-01-22 15:18:21

UbuntuLinuxApache

2013-03-25 11:51:42

php漏洞代碼審計php

2009-11-16 16:17:45

PHP數(shù)組排序
點贊
收藏

51CTO技術(shù)棧公眾號