ФорумПрограммированиеPHP для идиотов → выгруз из мускуля

выгруз из мускуля

  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 28 июня 2009 г. 16:39

    Вообщем выгружаю информацию из мускуля, но информации очень много (база урлов), их порядка 10 000, не могу выгрузить все сразу, выдает:
    Fatal error: Maximum execution time of 30 seconds exceeded in ***.php on line 30

    думаю как бы поместить это всё может в массив или может куда ещё, чтобы потом скрипт выполнил кое-какое сравнение и в случае чего удалил запись из базы. может есть какие-то соображения? потому что меня пугает перспектива времени скрипта.
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 28 июня 2009 г. 16:42, спустя 3 минуты 6 секунд

    developer, если верить http://dev.mysql.com/doc/refman/5.0/en/select.html

    и если у тебя есть права на такие вещи, то можешь попробовать

    mysql_query("select * from table into outfile '".dirname(__FILE__)."/dump.sql'");

    нечто такое)) ну и права у папки куда буш выгружать дожны позволить пользоватулю мускуль записать файл туда :)
    Сапожник без сапог
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 28 июня 2009 г. 16:55, спустя 12 минут 54 секунды

    Или попробуй system('mysqldump -параметры') или exec, passthru.

    Шпаргалка по mysqldump: http://adw0rd.ru/2009/mysqldump-and-cheat-sheet/
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 29 июня 2009 г. 7:19, спустя 14 часов 23 минуты 47 секунд

    не правильно наверное я выразился, имело ввиду что в таблице c1_links очень много записей, а именно адресов url, так вот выгружаю все адреса из базы, затем они проверяются по наличию в ЯКе и если в каталоге их нет - удаляем. Это очень долгий процесс, поэтому скрипт не успевает. Как бы оптимизировать?
    if($_GET['action'] == "delete") {
    $result = mysql_query("select id, url from c1_links");
    $y = 0;
    while ($y < mysql_numrows($result)) :
    $id = mysql_result($result, $y, 'id');
    $url = mysql_result($result, $y, 'url');
    $urls = $_GET['url'] ? $_GET['url'] : $url;
    $XML = simplexml_load_file("http://bar-navig.yandex.ru/u?ver=2&show=31&url=".urlencode($urls));
    $cat = (string)$XML->topics->topic['title'];
    if ($cat == NULL){
    mysql_query("DELETE FROM c1_links WHERE id = " . $id . "");
    }
    $y++;  
    endwhile;
    }
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 29 июня 2009 г. 7:41, спустя 22 минуты 43 секунды

    developer, запихни все в mysql (для работы с XML - http://adw0rd.ru/2009/xpath-mysql/) или увеличить max_execution_time
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 29 июня 2009 г. 8:09, спустя 27 минут 8 секунд

    max_execution_time не помогает или не увеличивает, скорее всего ограничил хостер, а можно ли сделать какую нибудь задержку в работе скрипта? скажем чтобы он выгрузил данные из базы, поработал 20 секунд - перерыв 10 секунд и пошёл дальше (не сначала, а именно дальше).

    либо сделать так чтобы он всю базу разбивал скажем по 50 запросов (50 нормально выводит на одну страницу), выполнял проверку, потом шёл на следующую страницу и так до последней.
  • phpdude

    Сообщения: 26632 Репутация: N Группа: в ухо

    Spritz 29 июня 2009 г. 8:10, спустя 1 минуту 33 секунды

    developer, можно второй вариант, почему бы не сделать его?)) просто выгружать порциями ..
    Спустя 18 сек.
    заодно синхронизировать можно будет =))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 29 июня 2009 г. 8:13, спустя 3 минуты 20 секунд

    developer, а крон доступен? ssh?
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 29 июня 2009 г. 8:34, спустя 20 минут 30 секунд

    крон доступен, но он ведь для других целей, запускает приложение в определенное время или я что-то не знаю?
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 29 июня 2009 г. 8:36, спустя 2 минуты 16 секунд

    developer, вот и сапускай из него php-cli если доступен cli
    Спустя 18 сек.
    на него вроде не распространяется execute_time
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 29 июня 2009 г. 9:58, спустя 1 час 21 минуту 45 секунд

    тобишь запустить скрипт через крон? у него время выполнения я подсчитал порядка 500 секунд
  • adw0rd

    Сообщения: 22908 Репутация: N Группа: в ухо

    Spritz 29 июня 2009 г. 10:11, спустя 13 минут 7 секунд

    developer, да
    adw/0
  • developer

    Сообщения: 241 Репутация: N Группа: Кто попало

    Spritz 29 июня 2009 г. 10:28, спустя 16 минут 42 секунды

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

Пожалуйста, авторизуйтесь, чтобы написать комментарий!