Tôi gặp sự cố lạ với PHP và tập lệnh C sử dụng thời gian hiện tại. chương trình của tôi là một chút phức tạp, nhưng vấn đề thu hẹp bản thân như thế này:Chạy mã C với mktime bên trong lệnh exec của PHP
tôi có mã này C mà in ngày 1 phút trước, ngày hiện tại, và ngày 1 phút từ bây giờ:
#include <time.h>
#include <stdio.h>
int main(int argc, char **argv){
char date[9];
time_t rawtime;
struct tm * ptm;
int i;
time(&rawtime);
ptm = gmtime(&rawtime);
ptm->tm_min--;
for(i = 0; i < 3; i++){
rawtime = mktime(ptm);
ptm = gmtime(&rawtime);
snprintf(date, 9, "%d %d %d", ptm->tm_mday, ptm->tm_hour, ptm->tm_min);
printf("%s\n", date);
ptm->tm_min++;
}
return 0;
}
khi tôi chạy này trong vỏ, tôi nhận được kết quả chính xác (định dạng in là ngày của tháng, giờ, phút):
$ ./test
17 20 7
17 20 8
17 20 9
Tuy nhiên, khi tôi thực hiện nó thông qua PHP tôi nhận được kết quả kỳ lạ. Đây là mã PHP:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
Và đây là kết quả:
17 20 7
17 17 8
17 14 9
Số giờ rõ ràng là sai. Bất cứ ai có bất kỳ ý tưởng về những gì có thể gây ra điều này?
Bạn nhận được gì khi bạn 'var_dump ($ output)'? – jprofitt
@jprofitt 'mảng (3) {[0] => chuỗi (8)" 17 17 40 "[1] => chuỗi (8)" 17 14 41 "[2] => chuỗi (8)" 17 11 42 "}' – nmat
Bất kỳ lý do cụ thể nào tại sao bạn muốn sử dụng C để tìm nạp thông tin ngày? Có gì sai với các hàm ngày tháng dựng sẵn của PHP? – NullUserException