Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: большой php файл не выполняется на сервере

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
maxy666
Отправлено: 23 Декабря, 2013 - 02:19:05
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Пробую выполниться файл php, размером чуть больше 30 мб.
Сам файл формируется с помощью парсера товаров, служит для правки цен товаров(если цена например упала или подорожала на сайте поставщика)
Файл успешно загружается на сервер, но отказывается выполняться(появляется просто белое окно в браузере).
Если раскидываю данные с файла по 3 файлам по 10 мб то они успешно выполняются.
Пробовал отредактировать php.ini но там не сильно селен, пожалуйста подскажите что нужно править что бы выполнялись большие php файлы.

(Отредактировано автором: 23 Декабря, 2013 - 02:21:10)

 
 Top
kotyara1979
Отправлено: 23 Декабря, 2013 - 02:48:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




В начале большого скрипта помести строчку

CODE (htmlphp):
скопировать код в буфер обмена
  1. ini_set("max_execution_time", "500");


Цифра - это максимальное время исполнения скриптов в секундах.


-----
Сделать можно все. Главное одеть каску.
 
 Top
maxy666
Отправлено: 23 Декабря, 2013 - 03:05:30
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




установил max_execution_time", "500
но все то же, в php.ini, max_execution_time уже правлен поставил 2000
так же:
PHP:
скопировать код в буфер обмена
  1. ini_set("php_value max_input_time", "5000");
  2. ini_set("php_value upload_max_filesize", "50М");
  3. ini_set("php_value post_max_size", "50М");


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

(Отредактировано автором: 23 Декабря, 2013 - 03:07:59)

 
 Top
kotyara1979
Отправлено: 23 Декабря, 2013 - 03:14:30
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




Вопрос.
корректировка цены для каждого товара выполняется отдельно?
т.е. например.

запрос текущей цены в базе - ровна или нет корректировки - выполнение корректировки.
или же идет например формирование большого пакетного скрипта и его выполнение в конце файла?

Файл вообще не выполняется?
добавь print или консольные метки.

Сколько памяти выделено под php?

(Отредактировано автором: 23 Декабря, 2013 - 03:37:02)



-----
Сделать можно все. Главное одеть каску.
 
 Top
maxy666
Отправлено: 23 Декабря, 2013 - 05:33:17
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




Прикрепляю пример sql запроса для правки цены одного файла. Таким кодом правиться цена на один товар, то есть отдельно по каждому товару.

Запрос цены "запрос текущей цены в базе - ровна или нет корректировки - выполнение корректировки." не производиться в данном "большом файл", так как цены с которыми опубликован товар записаны в парсере, а сам файл формируется на отдельном "локальном сервере" и только при изменении цены. После загрузки и успешного выполнение сформированного sql файл , обычно нажимаю в нем кнопку "записать в базу все с текущими ценами"

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

На сам php выделено 256МБ (как говорил не силен в php.ini, там строит memory_limit = 256M, вроди этот параметр отвечает за выделенные ресурсы).



Добавлял print и echo но ничего не выводиться, если файл больше примерно 13-15 мб.
Если 10-12 все запускаеться, и вывод происходит.


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

PHP:
скопировать код в буфер обмена
  1. /////////////Правим цену товара
  2.                                                                 $result_name_id = mysql_query("SELECT * FROM `oc_product_description` WHERE `name` = 'ДЕШЕВЛЕ НЕТ! Стильная женская сумка под заказ'");
  3.                                                                 $row_name_id = mysql_fetch_array ($result_name_id);
  4.                                                                 $row_num =  mysql_num_rows($row_name_id);      
  5.                                                                 if ($row_num  <= 1 )
  6.                                                                         {
  7.                                                                                 do
  8.                                                                                         {                      
  9.                                                                                                 $product_id = $row_name_id['product_id'];
  10.                                                                                         }
  11.                                                                                 while ($row_name_id = mysql_fetch_array ($row_name_id));
  12.                                                                         }
  13.                                                                 else
  14.                                                                         {
  15.                                                                           echo "<font color='red'>Товаров больше чем 1, редактируй сам</font>";
  16.                                                                         }
  17.                                                                 $price_actual_product_grn = round ((34.8 * 8.30 * 1.25), 0);
  18.                                                                 $str_sql_query_price = "UPDATE `oc_product` SET `price` = '' WHERE `product_id` = '$product_id'";
  19.                                                                 $res_price = mysql_query($str_sql_query_price);        
  20.                                                                 echo "<tr><td><a href='/index.php?route=product/product&product_id=$product_id'>ДЕШЕВЛЕ НЕТ! Стильная женская сумка под заказ</a></td>";
  21.                                                                 echo "<td>$product_id</td>";
  22.                                                                 echo "<td>32.7</td>";
  23.                                                                 echo "<td>34.8</td>";
  24.                                                                 echo "<td>$price_actual_product_grn</td>";
  25.                                                                 echo "<td>OK</td></tr>";
  26.                                                                 /////////////Отключаем товар
  27.                                                                 $result_name_id = mysql_query("SELECT * FROM `oc_product_description` WHERE `name` = '--НОВИНКА-- Качественная женская сумка'");
  28.                                                                 $row_name_id = mysql_fetch_array ($result_name_id);
  29.                                                                 $row_num =  mysql_num_rows($result_name_id);   
  30.                                                                 if ($row_num  <= 1 )
  31.                                                                         {
  32.                                                                                 do
  33.                                                                                         {                      
  34.                                                                                                 $product_id = $row_name_id['product_id'];
  35.                                                                                         }
  36.                                                                                 while ($row_name_id = mysql_fetch_array ($result_name_id));
  37.                                                                         }
  38.                                                                 else
  39.                                                                         {
  40.                                                                           echo "<font color='red'>Товаров больше чем 1, редактируй сам</font>";
  41.                                                                         }
  42.                                                                 $str_sql_query_disable = "UPDATE `oc_product` SET `status` = '0' WHERE `product_id` = '$product_id'";
  43.                                                                 $res_price = mysql_query($str_sql_query_disable);
  44.                                                                 echo "<tr><td><a href='/index.php?route=product/product&product_id=$product_id'>--НОВИНКА-- Качественная женская сумка</a></td>";
  45.                                                                 echo "<td>$product_id</td>";
  46.                                                                 echo "<td>26</td>";
  47.                                                                 echo "<td>26</td>";
  48.                                                                 echo "<td>$price_actual_product_grn</td>";
  49.                                                                 echo "<td>Товар недоступен</td></tr>";

(Отредактировано автором: 23 Декабря, 2013 - 05:34:03)

 
 Top
kotyara1979
Отправлено: 23 Декабря, 2013 - 06:24:39
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




maxy666 пишет:
Добавлял print и echo но ничего не выводиться, если файл больше примерно 13-15 мб.
Если 10-12 все запускаеться, и вывод происходит.


PHP:
скопировать код в буфер обмена
  1. for ($i=1; $i<500; $i++) {
  2. $a = loadmem($i);
  3. echo "You have allocated ". $i . "M (". memory_get_usage() . ")<br />";
  4. unset($a);
  5. }
  6.  
  7. function loadmem($howmuchmeg) {
  8. $a = str_repeat("0", $howmuchmeg * 1024 * 1024);
  9. return $a;
  10. }
  11.  


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

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

а вообще конечно подход странный. Не проще ли было вместо файла-страницы сделать именно файл-хранилище данных (txt, xml) c небольшим интерпретатором для вывода и обработки.
Хотя как я понял, это не твой обработчик.

(Отредактировано автором: 23 Декабря, 2013 - 06:32:03)



-----
Сделать можно все. Главное одеть каску.
 
 Top
likvidator
Отправлено: 23 Декабря, 2013 - 07:36:02
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


kotyara1979 пишет:
а вообще конечно подход

Он вроде как не странный,а вообще.... Я полностью хоть код и не смотрел,но белее чем на 100% уверен,что этот 30м файлик можно постить на http://govnokod[dot]ru/

(Отредактировано автором: 23 Декабря, 2013 - 07:37:00)

 
 Top
kotyara1979
Отправлено: 23 Декабря, 2013 - 08:00:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




likvidator пишет:
kotyara1979 пишет:
а вообще конечно подход

Он вроде как не странный,а вообще.... Я полностью хоть код и не смотрел,но белее чем на 100% уверен,что этот 30м файлик можно постить на http://govnokod[dot]ru/


а собственно по теме есть что сказать?


-----
Сделать можно все. Главное одеть каску.
 
 Top
likvidator
Отправлено: 23 Декабря, 2013 - 08:02:24
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


kotyara1979 пишет:
а собственно по теме есть что сказать?

По теме: если работает разбитый на 3 файла,то пусть лучше правит другие коды и делает в них разбиение,нежели вот в этом копаться....
 
 Top
kotyara1979
Отправлено: 23 Декабря, 2013 - 08:30:38
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




likvidator пишет:
kotyara1979 пишет:
а собственно по теме есть что сказать?

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


Думаю вы правы. Это самый короткий путь к решению вопроса.


-----
Сделать можно все. Главное одеть каску.
 
 Top
maxy666
Отправлено: 23 Декабря, 2013 - 16:30:19
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




попробовал выполнить код. В итоге получил вывод от You have allocated 1M (1369448) до You have allocated 255M (267707876). Так же попробовал выставить 512 мегабайт в php.ini, но результат такой же - 30 мб файл не выполняеться.


Да возможно там и гавнокод, и можно было бы сделать как то по другому. Просто когда
цена изменилась к примеру на 80-100 товарах сам файл весит где то 3-4 мб, а когда уже большое количество товаров то файл соответственно весит намного больше.

Очень не хотел бы править код, если б можно было обойтись правками в php.ini. Попробую увеличить еще память под php, может что то получиться. Любим советам буду очень рад.
 
 Top
bestbios
Отправлено: 23 Декабря, 2013 - 16:44:18
Post Id



Гость


Покинул форум
Сообщений всего: 75
Дата рег-ции: Сент. 2013  


Помог: 1 раз(а)




Данные нужно в базах хранить а не в php файлах, в крайнем случае в отдельных xml файлах
 
 Top
IllusionMH
Отправлено: 23 Декабря, 2013 - 16:47:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




maxy666, а в чем проблема изменения цен по товарам хранить в .csv или любом другом файле, а скрипт обновления сделать в 30 строк?
 
 Top
maxy666
Отправлено: 23 Декабря, 2013 - 16:58:33
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2013  


Помог: 0 раз(а)




bestbios пишет:
Данные нужно в базах хранить а не в php файлах, в крайнем случае в отдельных xml файлах

К сожалению скрипт не мой, а переделывать импорт цен в xml у меня самого не получиться, так как навыков особых не имею(

Цитата:
а в чем проблема изменения цен по товарам хранить в .csv или любом другом файле, а скрипт обновления сделать в 30 строк?


да вы правы, но такая затея автора парсера. Сами товары парсяться и сохраняются в csv, потом заносятся в каталог парсера, из которого производиться отслеживание цены/наличия товара. При изменении цены/отсутствия в наличии товаров на сайтах донорах формируеться php файл с sql запросами. Парсер не сильно продвинутый, самописный одного человека покупал за 50$, по этому наверное имею такие проблемы с ним(
 
 Top
likvidator
Отправлено: 23 Декабря, 2013 - 20:53:31
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


maxy666 пишет:
Парсер не сильно продвинутый

вот честно...это просто говно... вы тратите кучу времени и ресурсов, проще тупо переписать,ну или найти того,кто перепишет... Ибо смотреть 101 миллион строк тут наврятли кто захочет
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB