powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / не выходит залить XML
11 сообщений из 11, страница 1 из 1
не выходит залить XML
    #38372141
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пытаюсь загрузить XML большой . он в районе 56 Мб.
причём уже пытаюсь лить его порциями по 50 записей ($qty=50;)

Но почему-то затыкается он , а иногда не затыкается . хостинг подробной не написал причины что именно это лимит выполнения , либо нехватка памяти. знаю только если не выполнять sql команды (ни Select , ни insert , ни update ) , а писать
в файл например командой file_put_contents , то всё работает даже при $qty=5000000.

вот такая вот ошибка 500:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@net.lead100.ru and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache Server at www.net.lead100.ru Port 80"


Код: 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.
<?php
require_once('../affiliate/cfg.php');
//загрузка всех товаров 
$i=0;
$qty=50;
if ((isset($_GET['shop_id']) && is_numeric($_GET['shop_id'])) 
&&
(isset($_GET['step']) && is_numeric($_GET['step']))){
$a=($_GET['step']-1)*$qty;
$b=$_GET['step']*$qty;
$xml = simplexml_load_file('tovari_full.xml');
echo(
'<!DOCTYPE html>
<html>
 <head>
   <title>!DOCTYPE</title>
   <meta charset="utf-8">
 </head>
 <form name=\'myform\' method=\'get\' action=\'tovaryi_load.php\'>
     <input type=\'text\' name=\'step\' value =\''.($_GET['step']+1).'\'> <br>
     <input type=\'submit\' name=\'Enter\' value =\'ok\'>
     <input type=\'hidden\' name=\'shop_id\' value =\''.$_GET['shop_id'].'\'> <br>

 </form>
 <body><pre>');
foreach ($xml->shop->offers->offer as $book) { /*головной уровень*/
/*запишем или проапдейтим запись*/
if ($i>=$a && $i<=$b){/*вливаем порциями потому как разом всё не выйдет - затыкается сервак*/

$is_exists = $db->getOne("SELECT (case when exists(select '1' from affiliate_products_of_shops where offer_id=? and shop_id=?) then 1 else 0 end) as QTY", 
               array($book['id'],$_GET['shop_id'])); 
if ($is_exists<=0){
echo($i.' *insert new offer '.$book->name.'*(' .$is_exists
.' '.$book['id'].','.$_GET['shop_id'].')<br>');
$db->query("insert into affiliate_products_of_shops 
(offer_id,available,shop_id,URL,price,old_price,currencyId,
categoryId,pic0,pic1,name,brand,description
) VALUE(?,?,?,?,?,?,?,?,?,?,?,?,?)", array($book['id'], $book['available'],$_GET['shop_id'],
$book->url,
$book->price,
$book->oldprice,
$book->currencyId,
$book->categoryId,
$book->picture[0],
$book->picture[1],
$book->name,
$book->brand,
$book->description)); 
} else {
echo($i.'*update old offer '.$book->name.'*(' .$is_exists
.' '.$book['id'].','.$_GET['shop_id'].
')<br>');
$db->query("update affiliate_products_of_shops  set 
available=?,URL=?,price=?,old_price=?,currencyId=?,
categoryId=?,pic0=?,pic1=?,name=?,brand=?,description=?
 where shop_id = ? and offer_id=?", 
array( $book['available'],$book->url,$book->price,$book->oldprice,$book->currencyId,$book->categoryId,$book->picture[0],$book->picture[1],$book->name,$book->brand,$book->description,$_GET['shop_id'],$book['id']
));
}
}/*if i в интервале*/ 
$i++;}
echo("</pre>".$i." </body> </html>");} else echo('bad parametr');
?>
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372173
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81More information about this error may be available in the server error log. И что там?
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372183
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,


да не нашёл я в том то и дело . искал по ключевому tovaryi_load.php - так мой php-шник называется.
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372199
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Смотрите по времени запроса страницы
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372213
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleandron81,

Смотрите по времени запроса страницы

нет , видимо мы смотрим только лишь www_log, а error_log то что указано в сообщении
видимо что-то другое отличное www_log.
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372688
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
о подробности :

the reason your script is producing 500 errors ist that it requires enormous
amounts of memory - on our servers there is a process monitoring utility running
in the background which checks running processes by certain criteria, like memory
footprint, running time, etc.

Your script exceeds the standard limit of 400MB for PHP scripts - you can only
resolve this by reducing the memory footprint of your scripts.
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372693
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

подозреваю, что массив отъедает слишком много памяти который не укладывается в рамки возможностей нашего тарифа.
...
Рейтинг: 0 / 0
не выходит залить XML
    #38372762
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

есть ли возможность в simplexml работать не со всеми данными , а лишь отгружать часть в массив ?
и работать с этой частью, затем с другой частью, третьей ...
...
Рейтинг: 0 / 0
не выходит залить XML
    #38373119
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

ну алё. неужели никто ничего посоветует ? :-)
...
Рейтинг: 0 / 0
не выходит залить XML
    #38373167
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Может поможет http://www.ibm.com/developerworks/ru/library/x-xmlphp2/ - Листинг 5, Листинг 9 и т.д
...
Рейтинг: 0 / 0
не выходит залить XML
    #38373172
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleandron81,

Может поможет http://www.ibm.com/developerworks/ru/library/x-xmlphp2/ - Листинг 5, Листинг 9 и т.д

да вроде бы то что надо. XMLReader вроде бы потоковый , весь массив махом в память не вгоняет. попробую, спасибо
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / не выходит залить XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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