2016-04-20 5 views
0

I einfachen Code habe mit Hilfe von Kohlenstoff auf Laravel wie folgt:Carbon-Laravel schafft unterschiedlichen Wert auf Controller und in der Warteschlange (Jobklasse)

$dt = Carbon::now(); 
    $user_log = new UserLog; 
    $user_log->created = $dt->toDateTimeString(); 
    $user_log->save(); 

Und das Ergebnis ist anders in der Steuerung und in der Klasse Queue-Prozess (ex: Klasse Aufgabe erweitert Job implementiert ShouldQueue)

Ergebnis:

2016-04-20 14:32:02 // my setting timezone that i want 
2016-04-20 07:32:05 //UTC (ON queue process) 

jemand Ahnung darüber haben?

Antwort

0
$dt = Carbon::now()->setTimezone('Asia/Jakarta'); 

ich gerade, dass setTimezone auf meiner Warteschlange Job und Problem gelöst

+1

Problem vorübergehend gelöst. Werden Sie diese Zeitzone überall dort mit einbeziehen, wo Daten in PHP-Warteschlangen verarbeitet werden müssen? IMHO, ändere die Zeitzone in deiner php.ini für CLI und php-fpm. Siehe: https://www.siteground.com/kb/datetimezone_value_in_php/ – Mysteryos

1

Meine Vermutung wäre, dass die Laravels-Warteschlange die Befehlszeilenversion von PHP verwendet, die sich von allem unterscheidet, was auch immer Apache/Nginx liefert.

in der Befehlszeile Sie den folgenden Befehl verwenden, um Ihre PHP-Version zu finden:

php --version 

Dies sollten Sie eine Ausgabe wie folgt:

PHP 5.5.22 (cli) (built: Mar 9 2015 21:14:11) 
Copyright (c) 1997-2015 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies 

In Ihrem Laravel App Echo phpinfo() und Überprüfen Sie, ob die Version mit der Ausgabe von der Befehlszeile übereinstimmt.

+0

auf Produktion environtment, im ubuntu nginx, mit beanstalkd verwenden und Supervisor @Jeemusu –

+0

Gleiche Linie des Denkens, überprüfen Sie die CLI zu sehen, ob Version von PHP ist die gleiche wie die, die nginx verwendet. – Jeemusu

+0

es ist das gleiche @Jeemusu –

Verwandte Themen