PDO ODBC,几个结果集之一导致php崩溃

时间:2016-12-13 22:06:01

标签: sql-server iis-8.5 php-5.6 pdo-odbc

- 在IIS 8.5(Windows Server 2012 R2)上运行PHP 5.6

- 通过PDO,ODBC远程连接到SQL Server 2008 R2

- 孤立于一个查询的问题,其他查询正常运行,具有预期结果。

我正在调用一个返回8个结果集的存储过程。我将每个结果集写入CSV。当我到达第三个结果集时,php-cgi.exe崩溃,我得到500错误。

我已将此问题隔离到此特定结果集,因为如果我使用$ stmt-> nextRowset()完全跳过结果集,则一切都按预期工作。

    //execute sp, bind parameters year and period-defined above
    $StmtText = "{CALL PROCESS_PR (?, ?) }";
    $Stmt = $dbh->prepare($QueryText);
    $Stmt->bindParam(1, $PayYear, PDO::PARAM_INT);
    $Stmt->bindParam(2, $PayPeriod, PDO::PARAM_INT);
    $Stmt->execute();

    $file_out = fopen('c:\windows\temp\tmp_1.csv, 'w');
    $Result =  $Stmt->fetchAll(PDO::FETCH_NUM);
    foreach($Result as $row) { fputcsv($file_out,$row); }
    fclose($file_out);

    $Stmt->nextRowset();

    //this happens 8 times, fails on the third

我没有抛出任何PHP错误,而高级IIS日志记录并没有提出很多建议。我正在努力确定什么是崩溃的PHP。我通过SSMS直接执行存储过程并且执行成功,查看有问题的结果集,看不到任何异常 - 没有特殊字符,没有长字符串等。

我也一直在确认正确设置PHP内存限制,检查FastCGI和php.ini上的超时,并验证MVC ++ 2012已安装,32位和64位。

寻找有关如何在这个特定结果集上追踪php崩溃的任何想法。非常感谢。

更新:笑下来Vergil的回答解决了这个问题。有问题的结果集有两个数据类型为varchar(max)的字段。将其中一个更改为varchar(255)解决了这个问题。

0 个答案:

没有答案