Sto avendo un problema strano con PHP e uno script C che utilizza l'ora corrente. Il mio programma è un po 'complessa, ma il problema si restringe a questo:codice C Correndo con mktime all'interno exec di PHP
ho questo codice C che stampa la data del 1 minuto fa, la data corrente, e la data di 1 minuto dalla società:
#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;
}
quando eseguo questo nella shell, ottengo risultati corretti (il formato di stampa è il giorno del mese, ora, minuto):
$ ./test
17 20 7
17 20 8
17 20 9
Tuttavia, quando eseguo attraverso PHP ottengo risultati strani. Questo è il codice PHP:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
E questo è l'output:
17 20 7
17 17 8
17 14 9
Le ore sono chiaramente sbagliato. Qualcuno ha qualche idea di cosa potrebbe causare questo?
Che cosa si ottiene quando si 'var_dump ($ output)'? – jprofitt
@jprofitt 'matrice (3) {[0] => string (8) "17 17 40"[1] => string (8) "17 14 41"[2] => string (8) "17 11 42 "}' – nmat
Qualche ragione particolare per cui vuoi usare C per recuperare informazioni sulla data? Cosa c'è di sbagliato con le funzioni di data built-in di PHP? – NullUserException