Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / не выходит залить XML / 11 сообщений из 11, страница 1 из 1
20.08.2013, 16:04
    #38372141
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выходит залить XML
пытаюсь загрузить 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
20.08.2013, 16:20
    #38372173
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выходит залить XML
andron81More information about this error may be available in the server error log. И что там?
...
Рейтинг: 0 / 0
20.08.2013, 16:23
    #38372183
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выходит залить XML
vkle,


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

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

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

нет , видимо мы смотрим только лишь www_log, а error_log то что указано в сообщении
видимо что-то другое отличное www_log.
...
Рейтинг: 0 / 0
21.08.2013, 08:06
    #38372688
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выходит залить XML
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
21.08.2013, 08:19
    #38372693
andron81
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выходит залить XML
andron81,

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

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

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

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

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

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


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