Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Почему останавливается скрипт?, читает только часть файла csv
Strannik  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




Добрый вечер.

в php.ini настройки
max_execution_time = 144000
max_input_time = 144000

делаю такую штучку:


ignore_user_abort(true);
set_time_limit(0);
$i=0;
conn();
$sql_dump="SELECT * FROM `dump` WHERE `id`='1'";
$res_dump=mysql_query($sql_dump);
if(!$res_dump||mysql_num_rows($res_dump)<1){$sql_dump2="INSERT INTO `dump` (`text`,`status`) VALUES ('Идет обновление базы данных...','yes')";}else{$sql_dump2="UPDATE `dump` SET `text`='Идет дамп...',`status`='yes' WHERE `id`='1'";}
$res_dump2=mysql_query($sql_dump2);
$r1='';$r2='';$r3='';$r4='';
$filename="csv.csv";
$handle = fopen("$filename", "r");
$count_rows=0;
$import='';
$error1='';
$error2='';
$error3='';
$error4='';
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
{
$count_rows++;
$oldperiod = strtotime($data[1]);
$newperiod = date('Y-m-d H:i:s', $oldperiod);

$olddate_create = strtotime($data[15]);
$newdate_create = date('Y-m-d H:i:s', $olddate_create);

$oldperiodmeter_reading = strtotime($data[13]);
$newperiodmeter_reading = date('Y-m-d H:i:s', $oldperiodmeter_reading);

if($data[2]!=''){
$sql0="SELECT * FROM `balans` WHERE `period`='$newperiod' AND `idn`='$data[2]'";
$res0=mysql_query($sql0);
if(!$res0||mysql_num_rows($res0)<1){$importone="INSERT INTO `balans`(`idn`, `period`, `start_saldo`, `earn_m`, `earn_r`, `pay`, `finish_saldo`) VALUES ('$data[2]', '$newperiod', '$data[5]', '$data[7]', '$data[6]', '$data[8]', '$data[9]')";}
else{$importone="UPDATE `balans` SET `start_saldo` = '$data[5]', `earn_m` = '$data[7]', `earn_r` = '$data[6]', `pay` = '$data[8]', `finish_saldo` = '$data[9]' WHERE `idn` ='$data[2]' AND `period`='$newperiod'";}
$res_importone=mysql_query($importone) or die(mysql_error($res_importone));//$error1.=mysql_error($res_import1);
$sql0e="SELECT * FROM `equipment` WHERE `idn`='$data[2]'";
$res0e=mysql_query($sql0e);
if(!$res0e||mysql_num_rows($res0e)<1){if($data[10]!='0'){$importtwo="INSERT INTO `equipment`(`idn`, `type`, `model`, `date_create`, `serial_number`, `date_of_sealing`, `seal_number`, `state`) VALUES ('$data[2]', '', '$data[11]', '$newdate_create', '$data[12]', '', '', '')";$res_importtwo=mysql_query($importtwo) or die(mysql_error($res_importtwo));}}
else{$importtwo="UPDATE `equipment` SET `type`='',`model`='$data[11]',`date_create`='$newdate_create',`serial_number`='$data[12]',`date_of_sealing`='', `seal_number`='',`state`=''";$res_importtwo=mysql_query($importtwo) or die(mysql_error($res_importtwo));}
$sqlimport_meter_reading="SELECT * FROM `meter_reading` WHERE `value` = '$data[14]' AND `period`='$newperiodmeter_reading' AND `idn`='$data[2]'";
$resimport_meter_reading=mysql_query($sqlimport_meter_reading);
if(!$resimport_meter_reading||mysql_num_rows($resimport_meter_reading)<1)
{if($data[10]=='1'&&$data[13]!=''){$importtree="INSERT INTO `meter_reading`(`idn`, `period`, `value`, `pay_type`) VALUES ('$data[2]', '$newperiodmeter_reading', '$data[14]', '$data[10]')";$res_importtree=mysql_query($importtree) or die(mysql_error($res_importtree));//$error3.=mysql_error($res_import3);
}}
$sql="SELECT * FROM `user_info` WHERE `account` = '$data[2]'";
$res=mysql_query($sql);
if(!$res||mysql_num_rows($res)<1)
{$importfour="INSERT INTO `user_info`(`fio`, `account`, `living_space`, `occupancy`, `adress`, `telefone`, `mobile`, `email`, `icq`, `password`, `password_temp`, `status`) VALUES ('".mysql_real_escape_string($data[3])."', '$data[2]', '', '', '$data[4]', '', '', '', '', '', '', 'user')";}
else{$importfour="UPDATE `user_info` SET `fio` = '$data[3]', `adress` = '$data[4]' WHERE `account` ='$data[2]'";}
$res_importfour=mysql_query($importfour) or die(mysql_error($res_importfour));//$error4.=mysql_error($res_import4);*/
}$i++; echo $i.'<br>';
}


скрипт обрабатывает файл до 2187 строки и останавливается,
т.е. просто пишет цифры в ряд до 2187:
1
2
3
....
2187

а почему понять пока не могу...
кто знает в чем может быть причина?

P.S.: смотрел логи сервера, ошибок нет.
P.P.S.: код конечно слишком накрученный, но по-другому никак...
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




зачем дублировать? Я тебе там ответил уже.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




вынес оттуда, там тема несколько другая.
сделал обработчик на запись в файл, но ошибок не записывает...

Как можно проверить в чем дело?

код:


ignore_user_abort(true);
set_time_limit(0);
$i=0;
conn();
$sql_dump="SELECT * FROM `dump` WHERE `id`='1'";
$res_dump=mysql_query($sql_dump);
if(!$res_dump||mysql_num_rows($res_dump)<1){$sql_dump2="INSERT INTO `dump` (`text`,`status`) VALUES ('Идет обновление базы данных...','yes')";}else{$sql_dump2="UPDATE `dump` SET `text`='Идет дамп...',`status`='yes' WHERE `id`='1'";}
$res_dump2=mysql_query($sql_dump2);
$r1='';$r2='';$r3='';$r4='';
$filename="abase/work/base_csv.csv";
$handle = fopen("$filename", "r");

$fperrors = fopen("errors.txt", "a"); // Открываем файл в режиме записи
$errors='';
$count_rows=0;
while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE)
{
$count_rows++;
$oldperiod = strtotime($data[1]);
$newperiod = date('Y-m-d H:i:s', $oldperiod);

$olddate_create = strtotime($data[15]);
$newdate_create = date('Y-m-d H:i:s', $olddate_create);

$oldperiodmeter_reading = strtotime($data[13]);
$newperiodmeter_reading = date('Y-m-d H:i:s', $oldperiodmeter_reading);

if($data[2]!=''){
$sql0="SELECT * FROM `balans` WHERE `period`='$newperiod' AND `idn`='$data[2]'";
$res0=mysql_query($sql0);
if(!$res0||mysql_num_rows($res0)<1){$importone="INSERT INTO `balans`(`idn`, `period`, `start_saldo`, `earn_m`, `earn_r`, `pay`, `finish_saldo`) VALUES ('$data[2]', '$newperiod', '$data[5]', '$data[7]', '$data[6]', '$data[8]', '$data[9]')";}
else{$importone="UPDATE `balans` SET `start_saldo` = '$data[5]', `earn_m` = '$data[7]', `earn_r` = '$data[6]', `pay` = '$data[8]', `finish_saldo` = '$data[9]' WHERE `idn` ='$data[2]' AND `period`='$newperiod'";}
$res_importone=mysql_query($importone); if(!$res_importone){$errors.=mysql_error($res_importone);}
$sql0e="SELECT * FROM `equipment` WHERE `idn`='$data[2]'";
$res0e=mysql_query($sql0e);
if(!$res0e||mysql_num_rows($res0e)<1){if($data[10]!='0'){$importtwo="INSERT INTO `equipment`(`idn`, `type`, `model`, `date_create`, `serial_number`, `date_of_sealing`, `seal_number`, `state`) VALUES ('$data[2]', '', '$data[11]', '$newdate_create', '$data[12]', '', '', '')";$res_importtwo=mysql_query($importtwo); if(!$res_importtwo){$errors.=mysql_error($res_importtwo);}}}
else{$importtwo="UPDATE `equipment` SET `type`='',`model`='$data[11]',`date_create`='$newdate_create',`serial_number`='$data[12]',`date_of_sealing`='', `seal_number`='',`state`=''";$res_importtwo=mysql_query($importtwo); if(!$res_importtwo){$errors.=mysql_error($res_importtwo);}}
$sqlimport_meter_reading="SELECT * FROM `meter_reading` WHERE `value` = '$data[14]' AND `period`='$newperiodmeter_reading' AND `idn`='$data[2]'";
$resimport_meter_reading=mysql_query($sqlimport_meter_reading);
if(!$resimport_meter_reading||mysql_num_rows($resimport_meter_reading)<1)
{if($data[10]=='1'&&$data[13]!=''){$importtree="INSERT INTO `meter_reading`(`idn`, `period`, `value`, `pay_type`) VALUES ('$data[2]', '$newperiodmeter_reading', '$data[14]', '$data[10]')";$res_importtree=mysql_query($importtree); if(!$res_importtree){$errors.=mysql_error($res_importtree);}//$error3.=mysql_error($res_import3);
}}
$sql="SELECT * FROM `user_info` WHERE `account` = '$data[2]'";
$res=mysql_query($sql);
if(!$res||mysql_num_rows($res)<1)
{$importfour="INSERT INTO `user_info`(`fio`, `account`, `living_space`, `occupancy`, `adress`, `telefone`, `mobile`, `email`, `icq`, `password`, `password_temp`, `status`) VALUES ('".mysql_real_escape_string($data[3])."', '$data[2]', '', '', '$data[4]', '', '', '', '', '', '', 'user')";}
else{$importfour="UPDATE `user_info` SET `fio` = '$data[3]', `adress` = '$data[4]' WHERE `account` ='$data[2]'";}
$res_importfour=mysql_query($importfour); if(!$res_importfour){$errors.=mysql_error($res_importfour);}//$error4.=mysql_error($res_import4);*/
if($errors!=''){
$test = fwrite($fperrors, $errors);
if ($test) echo 'Данные в файл успешно занесены.';}
}
$i++; echo $i.'<br>';
}fclose($fperrors);
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




А туда хоть что-то записывается? Может права не выставил?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




да, проверил только что:
$errors='start';
и загнал в файл очень много start
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




похоже сервер перегрузился на хостинге. а на своем сервере как проверить перегрузку сервера? и как понять что соединение с базой было потеряно?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




Strannik
так же само, файл проверяй smile.gif


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




inpost
в том то и дело - файл пуст, ошибок в нем нет(
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




Strannik
Пуст, даже "и загнал в файл очень много start " нет?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




я про то, что он ошибки не записывает. как понять, записал я к примеру "очень много start", а что мне это дает? максимум узнаю строку где обрыв, а дальше?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




Strannik
Я хочу быть уверенным, что у тебя на твоём сервере (где нет ограничения на лимит выполнения по времени скрипта) всё работает, включая запись в файл.
А вообще, сделай рекурсию, отработал X записей, через соккеты вызвал самого себя и завершил данный скрипт. Там как раз можно вызвать файл и не дожидаясь завершения работы завершить!


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




а про "через соккеты вызвал самого себя и завершил данный скрипт"
можно подробнее? где можно почитать?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




google: соккеты. smile.gif По крайней мере я так читал smile.gif


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Strannik  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 806
Пользователь №: 17108
На форуме: 8 лет, 2 месяца, 14 дней
Карма: 0




логи посмотрел, происходит обрыв соединения с базой данных(дошел до 95 000 строк). кто-нибудь знает как предовтратить или почему сервер может сбрасывать соединение(может настройках что-нибудь)?
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22919
Пользователь №: 20039
На форуме: 7 лет, 5 месяцев, 19 дней
Карма: 607




Strannik
Увы, не подскажу, но там лимит по времени на открытое соединение, через Х времени сбрасывается. Об этом я тебе и говорил выше, перехватить разрыв соединения с БД надо и снова открыть заново. У меня как раз такое же было, когда скрипт отрабатывал 20 минут.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса