За последние 24 часа нас посетили 16569 программистов и 1578 роботов. Сейчас ищут 982 программиста ...

Запуск скрипта в опенсервере?????

Тема в разделе "PHP и базы данных", создана пользователем kotik2, 10 окт 2015.

  1. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Добрый вечер,
    подскажите, пожалуйста...
    1)как запустить скрипт?
    написала скрипт в планировщике задач, назначила ближайшее время, не выполнился... результат выполнения скрипта не написалось в text.txt (файл text.txt вообще не создался и не написал результат в себя ("hello world"))
    Код (Text):
    1. %progdir%\modules\php\%phpdriver%\php-win.exe -c %progdir%\userdata\temp\config\php.ini -q -f %sitedir%\site.loc\hello.php -O %progdir%\userdata\temp\temp.txt
    Это пробный скрипт hello.php.
    Вопрос. Как нужно сделать, чтобы результат выполнения скрипта записался в лог?
    2)Дайте мне, плиз, документацию, по
    Код (Text):
    1. -c,-q,-f, -O
    Гуглила на эту тему, не нашла... Какой запрос вбить в поисковике?
    3)Моя основная задача это сделать выборки из других таблиц и занести в одну. Скажу, что таблица , из которой делается выборка, большая, содержит 46549259 строк. И скрипт, наверное, будет выполнятся 3 дня... На что обратить внимание, и как его запустить, и чтобы результат занесения скрипта заносился в файл? Я попробовала запустить скрипт hello.php(см. выше), у меня не получилось(см. выше) или я что-то неправильно делаю?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    Показывай свой код, что там и желательно структуру таблиц БД (;
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а какое время выполняется запрос например в phpmyadmin?
     
  4. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Денис, очень долго, надо обработать столько строк.
    Два дня работает.И он стал заносить результат выборки в нужную таблицу в базу- и хостингу не хватило памяти для занесения.(писал не хватает памяти на жестком диске)
    Для решения этой проблемы я почистила /tmp, /var/log
    Диска вроде хватает...память свободная есть.
    Код (PHP):
    1.  df -/var/lib/mysql/
    2. Filesystem         Size  Used Avail Use% Mounted on
    3. /dev/ploop40716p1  252G   15G  225G   7% / 
    Если запустить запрос в лимитом в 100,500 строк- работает 3,432 сек.

    Добавлено спустя 2 минуты 54 секунды:
    Структура таблиц написана на сайте http://manual.mstarproject.com/index.php/Tecdoc_tables.txt
    Запрос:
    Код (PHP):
    1. SELECT DISTINCT
    2.     ART_LOOKUP.ARL_SEARCH_NUMBER AS Art,
    3.     IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS MfcName,
    4.     ART_LOOKUP2.ARL_SEARCH_NUMBER AS ArtCanonical,
    5.     IF (ART_LOOKUP2.ARL_KIND = 3, BRANDS2.BRA_BRAND, SUPPLIERS2.SUP_BRAND) AS MfcNameCanonical,
    6.     DES_TEXTS.TEX_TEXT AS `Desc`
    7.     FROM   (ART_LOOKUP, (SELECT ARL_SEARCH_NUMBER,ARL_BRA_ID FROM ART_LOOKUP) as tab)
    8.     LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID
    9.     INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID
    10.     INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID
    11.     INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID
    12.     INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
    13.  
    14.     INNER JOIN ART_LOOKUP AS ART_LOOKUP2 FORCE KEY (PRIMARY) ON ART_LOOKUP2.ARL_ART_ID = ART_LOOKUP.ARL_ART_ID
    15.     LEFT JOIN BRANDS AS BRANDS2 ON BRANDS2.BRA_ID = ART_LOOKUP2.ARL_BRA_ID
    16.     INNER JOIN ARTICLES AS ARTICLES2 ON ARTICLES2.ART_ID = ART_LOOKUP2.ARL_ART_ID
    17.     INNER JOIN SUPPLIERS AS SUPPLIERS2 FORCE KEY (PRIMARY) ON SUPPLIERS2.SUP_ID = ARTICLES2.ART_SUP_ID
    18.     WHERE
    19.     ART_LOOKUP.ARL_SEARCH_NUMBER = tab.ARL_SEARCH_NUMBER AND
    20.     (ART_LOOKUP.ARL_KIND IN (3, 4) AND ART_LOOKUP.ARL_BRA_ID=tab.ARL_BRA_ID) AND
    21.     (ART_LOOKUP.ARL_KIND, ART_LOOKUP2.ARL_KIND) IN    ((1, 1), (1, 2), (1, 3),(2, 1), (2, 2), (2, 3),(3, 1), (3, 2), (3, 3), (4, 1)) AND 
    22.  
    ищет аналоги для каждого оригинала из таблицы ART_LOOKUP.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    хм, всего 46kk записей, 100k за 4 секунды, может просто обработать за раз по 100k записей, а не ждать 2 дня?
    ещё можно всё пихнуть в документо ореинтированную базу данных, например Elasticseach/Sphinx и искать через неё, а то возможно реляционная mysql не подходит
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нафига вообще нужно таскать данные из одной таблицы в другую?
     
  7. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    если было б нафиг, тогда бы не спрашивала...

    Добавлено спустя 41 секунду:
    На хостинге памяти вообще не хъватило.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так и почему? я не понял
     
  9. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Денис , делала я так. Лимит устанавливала в 1000, - так еще дольше и пишет памяти не хватает-сорри.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ладно, зачем отвечать на разумные вопросы об архитектуре, когда можно сосредоточиться на решении насущных проблем. =)
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    kotik2 не знаю какой у тебя ресурс ограничен, деньги или время, может ещё чего, пока я вижу два выхода:
    переезд на сервер, например http://ru.hetzner.com/hosting/produkte_rootserver/ex60
    или переделать архитектуру, может и запрос оптимизировать
     
  12. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Архитектура это как?
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    kotik2 переписать программу или доработать
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, и/или сервак нормальный взять. Не должно возникать такого, что тебе надо четыре миллиона записей побырику перекинуть из одной бд в другую каждый день часто и помногу. Это косяк в подходе. Подход надо менять.
     
  15. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Например?
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну расскажи пожалуйста подробнее. Не возможно же давать советы не зная всех аспектов. Что за машина? Почему так много записей живёт в другой бд? Почему не используешь одну бд? Сервис коммерчекий? У тебя есть сто евро в месяц? А пятьдесят?
     
  17. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Я понимаю, я делала циклом while. по лимитам
    типа , сначала
    Код (Text):
    1. $n=6000000 ; $limit =0; while ($limit<=$n){$limit2=$limit;$limit=$limit+1000 ;
    2.  $query="SELECT DISTINCT
    3.     ART_LOOKUP.ARL_SEARCH_NUMBER AS Art,
    4.     IF (ART_LOOKUP.ARL_KIND IN (3, 4), BRANDS.BRA_BRAND, SUPPLIERS.SUP_BRAND) AS MfcName,
    5.     ART_LOOKUP2.ARL_SEARCH_NUMBER AS ArtCanonical,
    6.     IF (ART_LOOKUP2.ARL_KIND = 3, BRANDS2.BRA_BRAND, SUPPLIERS2.SUP_BRAND) AS MfcNameCanonical,
    7.     DES_TEXTS.TEX_TEXT AS `Desc`
    8.     FROM   (ART_LOOKUP, (SELECT ARL_SEARCH_NUMBER,ARL_BRA_ID FROM ART_LOOKUP ".$limit2.",".$limit.") as tab)
    9.     LEFT JOIN BRANDS ON BRANDS.BRA_ID = ART_LOOKUP.ARL_BRA_ID
    10.     INNER JOIN ARTICLES ON ARTICLES.ART_ID = ART_LOOKUP.ARL_ART_ID
    11.     INNER JOIN SUPPLIERS ON SUPPLIERS.SUP_ID = ARTICLES.ART_SUP_ID
    12.     INNER JOIN DESIGNATIONS ON DESIGNATIONS.DES_ID = ARTICLES.ART_COMPLETE_DES_ID
    13.     INNER JOIN DES_TEXTS ON DES_TEXTS.TEX_ID = DESIGNATIONS.DES_TEX_ID
    14.  
    15.     INNER JOIN ART_LOOKUP AS ART_LOOKUP2 FORCE KEY (PRIMARY) ON ART_LOOKUP2.ARL_ART_ID = ART_LOOKUP.ARL_ART_ID
    16.     LEFT JOIN BRANDS AS BRANDS2 ON BRANDS2.BRA_ID = ART_LOOKUP2.ARL_BRA_ID
    17.     INNER JOIN ARTICLES AS ARTICLES2 ON ARTICLES2.ART_ID = ART_LOOKUP2.ARL_ART_ID
    18.     INNER JOIN SUPPLIERS AS SUPPLIERS2 FORCE KEY (PRIMARY) ON SUPPLIERS2.SUP_ID = ARTICLES2.ART_SUP_ID
    19.     WHERE
    20.     ART_LOOKUP.ARL_SEARCH_NUMBER = tab.ARL_SEARCH_NUMBER AND
    21.     (ART_LOOKUP.ARL_KIND IN (3, 4) AND ART_LOOKUP.ARL_BRA_ID=tab.ARL_BRA_ID) AND
    22.     (ART_LOOKUP.ARL_KIND, ART_LOOKUP2.ARL_KIND) IN ((1, 1), (1, 2), (1, 3),(2, 1), (2, 2), (2, 3),(3, 1), (3, 2), (3, 3), (4, 1))";
    23. $res=mysql_query($query) or die(mysql_error());
    24. }
    Все равно не катит, пишет "Got error 28 from storage engine"

    Скажите, пожалуйста, как насчет первых двух вопросов... Думаю на опенсервере запустить скрипт.
     
  18. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Я не видела ваше сообщение, его вроде не было, когда я вам отвечала. Помогите, пожалуйста. Ось дебиан. Есть база текдок, она всемирная база запчастей автомобилей. И из нее нужно выбрать все аналоги и сунуть в одну таблицу (аналоги, как и бренды выбираются из других таблиц посредством джоины). Потому что есть таблица дополнительная аналогов, чтобы не запрашивать из двух -трех и т.д таблиц.был найден путь объединения готовых данных и дополнительной таблицы в одну.
    Сервер коммерческий не мой, называется FastVPS, содержит
    Код (Text):
    1. Filesystem         Size  Used Avail Use% Mounted on
    2. /dev/ploop40716p1  252G   15G  225G   7% /
    вот столько памяти.

    Добавлено спустя 2 минуты 48 секунд:
    скажите
    если то так, то папка mysql не ограничена , так?
     
  19. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    kotik2 так это жёсткий диск, а не оперативная память, оперативная на порядки быстрее, особенно для мелких данных, может mysql просто начинает в swap уходить вот и тормозит
     
  20. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Я запустила скрипт на хостинге в фоновом режиме,
    выдал в лог ошибку "Got error 28 from storage engine". Поэтому и спрашивала про жесткий диск. Делала по статье http://www.cyberciti.biz/faq/mysql-error-28-and-solution/
    мне не помогло, я делала все по этой статье, кроме "Increase disk".

    Добавлено спустя 7 минут 54 секунды:
    Что делать? и как определить? у меня вот не тормозит, а выдает ошибку "Got error 28 from storage engine".

    Решила запустить скрипт на опенсервере,третий день комп работает, как я поняла он создал в папке /userdata/temp #sqle98_3_2.MYD размером
    43 ГБ. и пока молчит-делает, как я понимаю выборки, -закончит- будет писать в нужную таблицу
    Код (Text):
    1. INSERT INTO .... FROM SELECT
    Не знаю как долго будет работать скрипт на опенсервере, а этот файл можно посмотреть?
     
  21. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    посмотри в диспетчере задач, mysql использует swap или нет, или зная сколько на сервер оперативной памяти посмотри сколько скушала mysql больше или меньше
     
  22. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    смотрю в диспетчере задач по команде
    Код (Text):
    1. ps -A
    Код (Text):
    1.  
    2. PID TTY          TIME CMD
    3.     1 ?        00:00:00 init
    4.     2 ?        00:00:00 kthreadd/79615
    5.     3 ?        00:00:00 khelper/79615
    6.   106 ?        00:00:00 upstart-udev-br
    7.   118 ?        00:00:00 udevd
    8.   137 ?        00:00:00 udevd
    9.   139 ?        00:00:00 udevd
    10.   274 ?        00:00:00 upstart-socket-
    11.  1593 ?        00:00:16 rsyslogd
    12.  1638 ?        00:00:00 saslauthd
    13.  1639 ?        00:00:00 saslauthd
    14.  1717 ?        00:00:07 cron
    15.  1750 ?        00:04:12 fail2ban-server
    16.  1861 ?        00:00:00 mysqld_safe
    17.  2200 ?        3-03:55:50 mysqld
    18.  2201 ?        00:00:00 logger
    19.  2286 ?        00:00:20 pdns_server
    20.  2288 ?        00:00:00 pdns_server
    21.  2342 ?        00:00:00 sshd
    22.  2369 ?        00:00:00 dovecot
    23.  2388 ?        00:00:00 anvil
    24.  2389 ?        00:00:00 log
    25.  2496 ?        00:00:06 master
    26.  2507 ?        00:00:20 qmgr
    27.  2527 ?        00:01:42 monit
    28.  2565 ?        00:00:13 memcached
    29.  2568 ?        00:00:00 php
    30.  2570 tty1     00:00:00 getty
    31.  2577 tty2     00:00:00 getty
    32.  3809 ?        00:04:29 main.php
    33.  3972 ?        00:00:00 tlsmgr
    34. 14036 ?        00:00:00 nginx
    35. 14037 ?        00:00:00 nginx
    36. 14103 ?        00:00:08 apache2
    37. 18009 ?        00:00:00 ssl-params
    38. 21579 ?        00:00:03 apache2
    39. 21581 ?        00:00:00 apache2
    40. 22886 ?        00:00:00 cleanup
    41. 22888 ?        00:00:00 smtp
    42. 22963 ?        00:00:00 trivial-rewrite
    43. 22981 ?        00:00:00 config
    44. 23040 ?        00:00:00 pickup
    45. 23157 ?        00:00:00 sshd
    46. 23165 ?        00:00:00 bounce
    47. 23166 pts/0    00:00:00 bash
    48. 23179 ?        00:00:00 smtpd
    49. 23180 ?        00:00:00 proxymap
    50. 23181 ?        00:00:00 anvil
    51. 23182 ?        00:00:00 auth
    52. 23184 ?        00:00:00 auth
    53. 23192 pts/0    00:00:00 ps
    54. 23996 ?        00:00:05 php
    55. 23997 ?        00:00:00 apache2
    56. 24005 ?        00:00:00 apache2
    57. 24006 ?        00:00:09 php
    58. 24008 ?        00:00:00 apache2
    59. 24009 ?        00:00:05 php
    [​IMG]

    Добавлено спустя 18 минут 29 секунд:
    как я поняла, что по параметру %CPU модуль mysqld потребляет больше оперативной памяти. -всего 99,9%
    Жутко вот растроилась... ума не приложу, что делать
     
  23. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    CPU понятно что 99%, а вот memory, swap? Просто не понятно, если ей не хватает памяти оперативной, то будет использовать диск и ждать придётся долго
     
  24. kotik2

    kotik2 Новичок

    С нами с:
    10 окт 2015
    Сообщения:
    39
    Симпатии:
    0
    Код (Text):
    1. free -m
    2.              total       used       free     shared    buffers     cached
    3. Mem:         32768       2801      29966          0          0       2580
    4. -/+ buffers/cache:        221      32546
    5. Swap:         4096         49       4046
    Судя по написаному, вроде мало оперативки используется, также свопа мало используется.
    Как я понимаю,это выводится в байтах. если это так, то это мало 32 мб оперативки. (как в далеких 2000)
    и что делать...

    Вопрос по-другому? Какие параметры нужны для интернет-магазина?Спасибо...
     
  25. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    устанавливаем и тестируем число запросов к разным страницам в секунду и решаем хватит ли нам этого