PHP ve şu anki zamanı kullanan bir C betiği ile garip bir sorun yaşıyorum. Benim program biraz karmaşık olmakla birlikte, sorunun bu kendini daraltır:PHP'nin exec içinde mktime ile C kodu çalıştıran
Şu andan itibaren tarih 1 dakika önce yazdırır bu C kodu, geçerli tarih ve tarih 1 dakika var:
#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;
}
Ben PHP aracılığıyla yürütüldüğünde
$ ./test
17 20 7
17 20 8
17 20 9
Ancak, ben garip sonuçlar elde
: Ben kabuğunda bu çalıştırdığınızda, ben doğru sonuçları (baskı biçimi ay, saat, dakika günüdür) olsun. Bu PHP kodu:
<?php
exec("path_to_exec/test", $output);
echo "$output[0]<br/>";
echo "$output[1]<br/>";
echo "$output[2]<br/>";
?>
Ve bu çıktısı şöyledir:
17 20 7
17 17 8
17 14 9
saat açıkça yanlıştır. Buna neden olabilecek herhangi bir fikri olan var mı?
rawtime = mktime(ptm);
ptm
işaretçi mktime
işlevi tarafından değiştirilir: Bunu yaptığınızda
:
ne alabilirim zaman 'var_dump ($ çıkış)'? – jprofitt
@jprofitt dizisi (3) {[0] => string (8) "17 17 40" [1] => string (8) "17 14 41" [2] => string (8) "17 11 42 "}' ' – nmat
Tarih bilgisini almak için C'yi neden kullanmak istediğiniz belli bir sebep var mı? PHP'nin yerleşik tarih fonksiyonlarında ne var? – NullUserException