DB의 인스턴스에 대한 보고서를 지난 달 동안 실행하려고합니다. 그러면 결과가 .CSV 파일로 저장됩니다. 발생하는 문제는이 스크립트에서 내부 서버 오류 500이 발생한다는 것입니다.
쿼리에 WHERE 절을 사용하여 데이터를 필터링하면이 문제가 발생하지 않으므로 쿼리와 함수를 알 수 있습니다 .CSV 파일을 만드는 것은 어느 정도까지 작동합니다. 나는 완전히 채워진 .CSV 파일을 얻는다. 그러나 추가 WHERE 절이 없으면 파일은 대다수의 데이터가있는 지점에 채워지는 것처럼 보이지만 다시 시작된 것처럼 보이며 결과 파일에는 전체 데이터 중 약 1/8 만 포함됩니다.
나는이 방법은 csv 파일 */오류 500 내부 서버 오류 CSV로 PHP 스크립트 작성
//-----Connection to DB-----//
$connectionInfo = array("UID" => $this->dbLogin, "PWD" => $this->dbLogin);
$conn = sqlsrv_connect($this->serverName, $connectionInfo)or die(print_r(sqlsrv_errors()));
//-----SQL Query-----//
$getList = sqlsrv_query($conn, $this->queryString, array(), $this->options)or die(print_r(sqlsrv_errors()));
//-----File creation-----//
$fp = fopen("../" . $this->portal . "/" . $this->folder . "/" . $this->fileName . ".csv", 'w+');
// //-----Add in first row that contains the column titles-----//
fputcsv($fp, $this->headerArray);
fclose($fp);
// // // -----Add data to the csv file-----//
$fp = fopen("../" . $this->portal . "/" . $this->folder . "/" . $this->fileName . ".csv", 'a+');
$data = array();
while ($row = sqlsrv_fetch_array($getList, SQLSRV_FETCH_ASSOC)) {
$data['id'] = $row['id'];
$data['fullname'] = $row['fullname'];
$data['profile'] = $row['profile'];
$data['starttime'] = date_format($row['starttime'],'D jS M Y G:i');
$data['endtime'] = date_format($row['endtime'], 'D jS M Y G:i');
$endTime = date_format($row['endtime'], 'U');
$startTime = date_format($row['starttime'], 'U');
if($startTime == null || $startTime == ""){
$startTime = $endTime;
}
$diff = ($endTime - $startTime);
$data['duration'] = round($diff/3600).gmdate(":i:s", $diff);
$data['hour'] =date_format($row['starttime'] ,'G');
$data['ref'] = $row['ref'];
$data['endType'] = $row['endType'];
$data['problem'] = $row['problem'];
$data['solution'] = $row['solution'];
$data['type'] = $row['type'];
fputcsv($fp, array_values($data));
}
fclose($fp);
sqlsrv_close($conn);
}
을 만드는 데 사용됩니다 * 월 .CSV 함수를 CreateFile() {
/* 의 데이터 40K + 행을 기대하고있다 .csv 파일을 만들기 위해 내 클래스 파일에서 사용되는 함수입니다. 내가 사용하고있는 쿼리가 있습니다.
$this->queryString ="SELECT A.id
,B.firstname + ' ' + B.lastname AS fullname
,B.location
,A.profile
,A.siteid
,A.accountnumber
,A.starttime
,A.endtime
,A.ref
,A.endType
,A.problem
,A.solution
,A.type
FROM trend.report A
LEFT JOIN users.profile B
ON A.empId = B.id
WHERE DATEDIFF(M, A.endtime, GETDATE()) = 0
ORDER BY A.endtime DESC";
내가 예를
AND A.profile ='exampleProfile'
에 대한 추가하면 나는 아직도 20K + 행을 얻을,하지만 난 compeleted .CSV 파일을 얻을.
무엇이 눈에 띄게 분명합니까? 아니면 스크립트를 실행하는 데 걸리는 행/시간의 수 때문일 수 있습니까? 감사합니다.
일반적으로 500 오류는 웹 서버의 오류 로그에 항목을 생성합니다. –