Добрый день.
Столкнулся с такой же проблемой, решил, вот что я делал:
1. В /etc/php5/cli/php.ini отключил вывод ошибочных сообщений похоже из-за них обрывается pipe
display_errors = Off
display_startup_errors = Off
В скрипте 1C_CDR.php
2. изменил запрос таким образом , плохо срабатывает автоматическое преобразование типов
INS ERT INTO $db_name.$name_tmp_cdr ( calldate, billsec, channel, disposition, dst, dstchannel, lastapp, linkedid, recordingfile, src, uniqueid, lastdata, did)
SEL ECT
calldate,
billsec,
channel,
disposition,
dst,
dstchannel,
lastapp,
linkedid,
recordingfile,
src,
uniqueid,
lastdata,
did
FR OM $db_name.PT1C_cdr
WHERE DATE(PT1C_cdr.calldate) BETWEEN '$date1' AND '$date2';";
этот пункт не обязателен, хотя возможно он тоже сыграл свою положительную роль.
3. в этом запросе в конце убрал AND , потому как если номера запросу не передадутся после AND в запросе сразу идет конструкция LIMIT 200 и запрос выполняется с ошибкой
INS ERT IN TO $db_name.$name_tmp_linkedid (linkedid)
SELE CT DISTINCT
$name_tmp_cdr.linkedid
FR OM $db_name.$name_tmp_cdr
WH ERE
linkedid<>'' ";
4. а вот тут AND добавил
for($i=0; $i < $rowCount; $i++) {
$num = $numbers[$i];
if($num == ''){
continue;
}
if(!$i == 0)
$zapros=$zapros.' OR ';
if($i == 0)
$zapros=$zapros.' AND ';
Столкнулся с такой же проблемой, решил, вот что я делал:
1. В /etc/php5/cli/php.ini отключил вывод ошибочных сообщений похоже из-за них обрывается pipe
display_errors = Off
display_startup_errors = Off
В скрипте 1C_CDR.php
2. изменил запрос таким образом , плохо срабатывает автоматическое преобразование типов
INS ERT INTO $db_name.$name_tmp_cdr ( calldate, billsec, channel, disposition, dst, dstchannel, lastapp, linkedid, recordingfile, src, uniqueid, lastdata, did)
SEL ECT
calldate,
billsec,
channel,
disposition,
dst,
dstchannel,
lastapp,
linkedid,
recordingfile,
src,
uniqueid,
lastdata,
did
FR OM $db_name.PT1C_cdr
WHERE DATE(PT1C_cdr.calldate) BETWEEN '$date1' AND '$date2';";
этот пункт не обязателен, хотя возможно он тоже сыграл свою положительную роль.
3. в этом запросе в конце убрал AND , потому как если номера запросу не передадутся после AND в запросе сразу идет конструкция LIMIT 200 и запрос выполняется с ошибкой
INS ERT IN TO $db_name.$name_tmp_linkedid (linkedid)
SELE CT DISTINCT
$name_tmp_cdr.linkedid
FR OM $db_name.$name_tmp_cdr
WH ERE
linkedid<>'' ";
4. а вот тут AND добавил
for($i=0; $i < $rowCount; $i++) {
$num = $numbers[$i];
if($num == ''){
continue;
}
if(!$i == 0)
$zapros=$zapros.' OR ';
if($i == 0)
$zapros=$zapros.' AND ';
Изменено: - 27.11.2018 21:41:16