매우 이상한 문제가 있습니다.문자열 변환에 대한 PHP 레이싱 조건
코드 조각을 실행할 때 $carDay->date
이 개체가 아님을 알리는 오류가 발생합니다. 하지만 디버그 모드로 실행하면 정상적으로 작동합니다. 그래서 나는 그것이 일종의 경주 조건이라고 생각합니다.
$ trip은 ORM 데이터베이스 (MySQL)의 객체이고 getStart->는 "20120929T024754"형식의 시작 날짜를 가져 오는 getter입니다. 그 문자열을 날짜로 변환 한 다음 그 날짜로 물건을합니다. 하지만 디버깅하지 않고 실행하면 날짜에 액세스하려고 할 때 날짜가 변환되지 않는 것 같습니다. 누구든지 아이디어를 가진 사람이 있습니까? 아니면 내가 할 수있는 일이 무엇입니까?
private function calculateIntLate($trip) {
$carDay = $trip->getStart();
$carDay_date = $this->convertStringToDateTime($carDay);
$carDate = $carDay_date->date;
}
public function convertStringToDateTime($string) {
//
//20120929T024754
$year = substr($string, 0, 4);
$month = substr($string, 4, 2);
$day = substr($string, 6, 2);
$hour = substr($string, 9, 2);
$minute = substr($string, 11, 2);
$second = substr($string, 13, 2);
$dateTime = new \DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $second);
return $dateTime;
}
'위해서 var_dump ($ carDay)를 사용하지 못할;'그리고 당신의 코드에 따라 문자열이 아닌 객체입니다. – zerkms
공유 데이터가있는 스레드를 사용하고 있습니까? (나는 의도적으로 그렇게하지 않으면 PHP에서 이런 일이 발생할 수 있다고 생각하지 않습니다.) – millimoose
스레드를 사용하고 있지 않습니다. 그것은 이상한 부분입니다. 게으른 로딩을 할 수 있습니까? – Nealv