Доброго дня.
Изначальный вопрос содержал ошибочные вводные и был изменён.
Есть два куска кода:
1.php
while(1) {
$files = array(1 => 'Inf01','Inf02','Inf03','Inf04','Inf05');
$b = 0;
foreach ($files as $key => $filename) {
$file = '/home/admin/web/***/public_html/up/'.$filename.'.csv';
if (file_exists($file)) {
$parsing = '/home/admin/web/***/public_html/pars/'.$key.'.inc';
if ($key < 10) $parsing = '/home/admin/web/***/public_html/pars/0'.$key.'.inc';
$logfile = '/home/admin/web/***/public_html/logs/'.$filename.'.log';
$current = iconv ('WINDOWS-1251','UTF-8',file_get_contents($file)); # Переписать! Тормозит!
file_put_contents($logfile, $current, FILE_APPEND | LOCK_EX); # Пишем необработанную строку в логи.
$parser = explode(';', $current);
if ($parser[2] > 0) include 'sms.php'; # Отправка sms.
$insert = '<tr class="color'.$parser[0].'"><td><a target="_blank" href="log.php?l='.$filename.'.log">'.$filename.'</a></td><td>'.$parser[1].'</td><td>'.$parser[3].'</td><td class="sms'.$parser[2].'"></td></tr>';
if ($parser[0] == 0) $insert = '';
file_put_contents($parsing, $insert); # Пишем наш будущий HTML код.
unlink($file); #Удаляем обработанный файл.
}
}
sleep(1);
if (file_exists('/home/admin/web/***/public_html/stop')) break;
sms.php
if (!function_exists('sendsms')) {
function sendsms($smstext,$smsnumber){
$headers = array(
'Accept-charset: UTF-8',
'Content-type: application/x-www-form-urlencoded; charset=UTF-8',
);
if( $curl = curl_init() ) {
curl_setopt($curl, CURLOPT_URL, 'http://62.149.27.48:8180/sms/recv');
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, "login=*****&password=*****&src=*****&dst=".$smsnumber."&text=".$smstext);
$out = curl_exec($curl);
echo $out;
curl_close($curl);
}
}
}
switch ($parser[2]) {
case '4': sendsms($parser[3],38063*******);
case '3': sendsms($parser[3],38093*******);
case '2': sendsms($parser[3],38067*******);
case '1': sendsms($parser[3],38067*******);
}
$debug_message = "А у попа была собака. Он её любил!";
$debug_message2 = "";
sendsms($debug_message,38067*******); # OK
sendsms($debug_message2,38067*******); # FAIL
#sendsms($parser[3],38067*******); #FAIL
?>
Судя по симптомам и по внезапно найденной ошибке:
PHP Notice: Undefined variable: parser in ***/sms.php on line 20
Напрашивается вывод, что в файл, который присоединён через include перестали передаваться переменные $parser[]. Причём переменные не могут быть пустыми, как как после присоединённого файла есть запись в лог, в котором переменные явно присутствуют и явно не пустые.
Изначально парсится xxx.csv файл, который имеет структуру
4;2016-01-18 14:25:54;2;Тест проверка СМС
. После распарсивания в лог падает тоже строчка целиком, что позволяет снять подозрения с того, что нужные переменные могут быть пустыми.
Пните меня в нужную сторону, ибо не замечаю я чего-то банального.
Спасибо.