PHP ODBC默认情况下,I / O包不是线程安全的

时间:2018-08-07 12:10:48

标签: php multithreading odbc

我有一个可以正常工作的小型PHP选择脚本,我用另一个替换了php ini文件,此后,我收到以下错误消息:

  

警告:odbc_exec():SQL错误:ApplicationDiagnosis:可能的I / O   复制内存时检测到竞争状态。 I / O包不是   默认情况下线程安全。在多线程应用程序中,流必须   以线程安全的方式访问,例如线程安全的包装器   由TextReader或TextWriter的Synchronized方法返回。这个   也适用于StreamWriter和StreamReader之类的类,SQL状态   HY000在SQLExecDirect中   C:\ xampp \ htdocs \ standsafe \ dbscripts \ sage \ importSales.php在第8行

这是我的php脚本

<?php
$num_minutes = 10;
ini_set('max_execution_time', (60*$num_minutes));

$conn = odbc_connect("CData Sage50UK Source","manager","mypassword");
$query = odbc_exec($conn, "SELECT * FROM SalesOrders WHERE CustomerReference = '06/08/18' limit 1");

while($row = odbc_fetch_array($query)){

    $json1[] = array_map('utf8_encode', $row);

}   

echo json_encode($json1);
?>

thew php.ini文件中的某些内容必须已更改,但是我已经没有旧的了!有人可以协助吗?

1 个答案:

答案 0 :(得分:1)

我发现问题实际上出在Sage中,并且通过重新启动Sage SData(工具> Internet选项> SData设置)解决了。看起来Sage软件正在同时尝试从同一数据文件读取或写入。