Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Код перестаёт вносить данные в БД, если долго выполняется. / 7 сообщений из 7, страница 1 из 1
25.09.2014, 06:19
    #38756926
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
Есть такой код.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
<?php //error_reporting(0);

include ('b-d.php');

$regulyar_slova = "/^([а-яё\s\-]+)$/iu";

$n = 206;
for($n; $n <= 210; $n++)
{
	sleep(2);
	$kod_straniczy = file_get_contents('http://sajt.com/'.$n);
	preg_match_all("/<a href=\"\/search\/images\/.*<\/a>/", $kod_straniczy, $stroka);
	$stroka = $stroka[0];

	for($i=0; $i<count($stroka); $i++)
	{
		$stroka[$i] = preg_replace("/<\/a>/", "", $stroka[$i]);
		$stroka[$i] = preg_replace("/<.*>/", "", $stroka[$i]);
		if(preg_match($regulyar_slova, $stroka[$i]))
		{
			$stroka_kir[$i] = $stroka[$i];
			}
		}
	if(count($stroka_kir) > 0)
	{
		$stroka = array_values(array_unique($stroka_kir));
		}
		//var_dump($stroka);
//		var_dump($stroka_kir);
////////////////////////////////////////////////////////////////////////////////////////////////////
	if(count($stroka) > 0)
	{
		$vr_nabora = time();
		$ses = session_id();
		
		mysql_query("  
		INSERT INTO `tn` (`vr`, `ses`)  
		VALUES ('".$vr_nabora."', '".$ses."')
		");
		
		for ($i = 0;$i < count($stroka);$i++)
		{
			mysql_query("  
			INSERT IGNORE INTO `ts` (`s`)
			VALUES ('".$stroka[$i]."')
			");
			mysql_query("  
			INSERT INTO `t_s` (`id_n`, `id_s`)  
			VALUES ((SELECT `idn` FROM `tn` WHERE `vr` = '".$vr_nabora."' AND `ses` = '".$ses."'),  
					(SELECT `ids` FROM `ts` WHERE `s` = '".$stroka[$i]."'))  
			");
			}
		}
		
	print_r($n);
	echo ("<br>");
	print_r($stroka);
	echo ("<hr>");
	unset(
	$kod_straniczy,
	$stroka,
	$stroka_kir);
	}
?>


Если цикл выполняется немного раз, всё заносится в БД, а если зашпиндорить ему интервал в 1000, то на странице принты выводятся, а в БД нихрена не пишет.
В чём дело может быть? И почему принты выводит не последовательно, а порциями?
...
Рейтинг: 0 / 0
25.09.2014, 08:05
    #38756950
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
andrejkзашпиндоритьНу и словечко! Сами придумали?

andrejkинтервал в 1000, то на странице принты выводятся, а в БД нихрена не пишетМускуль закрывает соединение, а вывод ошибок отключен. Как вариант, конечно. Хотя, вообще то, PHP должен бы востанавливать коннект. Других мыслей нет пока.

andrejkИ почему принты выводит не последовательно, а порциями?А что, эти "порции" выводятся параллельно чтоль? ;-) Если имеете в виду вывод не в реальном времени (с задержкой), то это объясняется работой выходного буфера PHP. Нужно в реальном времени - делайте принудительный сброс буфера.
...
Рейтинг: 0 / 0
25.09.2014, 10:15
    #38757068
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
А как сделать принудительный сброс дампа?
...
Рейтинг: 0 / 0
25.09.2014, 10:16
    #38757069
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
Тфу, буфера… ))
...
Рейтинг: 0 / 0
25.09.2014, 10:28
    #38757085
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
Куда прописать flush()?
...
Рейтинг: 0 / 0
25.09.2014, 13:14
    #38757396
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
В код
...
Рейтинг: 0 / 0
25.09.2014, 13:14
    #38757397
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Код перестаёт вносить данные в БД, если долго выполняется.
там где надо сбросить буфер
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Код перестаёт вносить данные в БД, если долго выполняется. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]