Настройка некоторых тестов в PHPUnit / Sublime, и я сталкиваюсь с проблемой с постоянным соединением PDO.
Когда я добавлю array(PDO::ATTR_PERSISTENT => true)
к соединению, тесты запускаются ОК, а затем в конце я получаю всплывающее окно с сообщением, что CLI перестал работать.
Если я закомментирую постоянную директиву, тесты пройдут нормально; но они тратят много времени на установление множества соединений с настройкой, разборкой и множеством объектов БД.
class DB_PDO {
protected $dsn = 'odbc:DRIVER={iSeries Access ODBC DRIVER} *** ';
protected $user = '***';
protected $pass = '***';
public function __construct($dsn='',$user='',$pass='') {
/* Handle defaults */
if ("" == $dsn) $dsn = $this->dsn;
if ("" == $user) $user = $this->user;
if ("" == $pass) $pass = $this->pass;
try {
if(!property_exists($this,'pdo')) {
// runs fast, but generates cli error
$this->pdo = new PDO($dsn,$user,$pass, array(PDO::ATTR_PERSISTENT => true));
// runs slowly, but no error
//$this->pdo = new PDO($dsn,$user,$pass);
// didn't tell me anything
//$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
} catch(PDOException $e) {
print "Error! " . $e->getMessage() . "<br>";
die;
}
// snip...
}
Если это поможет,
$ php -v
PHP 7.1.3 (cli) (built: Mar 14 2017 23:33:35) ( NTS MSVC14 (Visual C++ 2015) x64
)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Xdebug v2.5.1, Copyright (c) 2002-2017, by Derick Rethans
База данных, однако, находится на 5,6
Я не уверен, где искать проблему, так как моя единственная ошибка — всплывающее окно в Windows. Ничто не отражается в командной строке.
Запрошенная информация:
ошибка:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2018-04-03T21:00:11.000000000Z" />
<EventRecordID>60403</EventRecordID>
<Channel>Application</Channel>
<Computer>--redacted--.LOCAL</Computer>
<Security />
</System>
<EventData>
<Data>php.exe</Data>
<Data>7.1.3.0</Data>
<Data>58c87e19</Data>
<Data>ntdll.dll</Data>
<Data>6.3.9600.18946</Data>
<Data>5a9a3a38</Data>
<Data>c0000005</Data>
<Data>000000000003571c</Data>
<Data>1828</Data>
<Data>01d3cb8ec02fd590</Data>
<Data>C:\php\php.exe</Data>
<Data>C:\Windows\SYSTEM32\ntdll.dll</Data>
<Data>ff51f074-3781-11e8-8288-00155d14e007</Data>
<Data />
<Data />
</EventData>
</Event>
Задача ещё не решена.
Других решений пока нет …