<?php
// 建立 gettimeofday() 繫結
$ffi = FFI::cdef("
typedef unsigned int time_t;
typedef unsigned int suseconds_t;
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
int gettimeofday(struct timeval *tv, struct timezone *tz);
", "libc.so.6");
// 建立 C 資料結構
$tv = $ffi->new("struct timeval");
$tz = $ffi->new("struct timezone");
// 呼叫 C 的 gettimeofday()
var_dump($ffi->gettimeofday(FFI::addr($tv), FFI::addr($tz)));
// 讀取 C 資料結構的欄位
var_dump($tv->tv_sec);
// 印出整個 C 資料結構
var_dump($tz);
?>
int(0)
int(1555946835)
object(FFI\CData:struct timezone)#3 (2) {
["tz_minuteswest"]=>
int(0)
["tz_dsttime"]=>
int(0)
}