Как экспортировать 20 000 контактов из базы данных MySQL через PHP для импорта в настольную адресную книгу? - PullRequest
0 голосов
/ 21 октября 2009

Мне нужно написать скрипт для экспорта контактных данных для печати на наклейках для рассылки. В таблице базы данных может быть до 20 000 записей.

Основная проблема заключается в том, что количество записей может быть таким большим, и сайт размещается на общем сервере, и экспорт целых записей 20 КБ, по-видимому, приведет к уничтожению сценария или остановке. Если бы цифры были не такими высокими, я бы просто экспортировал все данные в файл hCard.

Решение должно быть на PHP, а полученный файл должен использоваться MS Office для распечатки наклеек с адресами.

Все идеи приветствуются !

Ответы [ 5 ]

4 голосов
/ 21 октября 2009

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

Вы можете экспортировать напрямую в CSV, как это,

SELECT * INTO OUTFILE 'result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM my_table;

Загрузите его в Word через mailmerge и отправляйтесь!

2 голосов
/ 21 октября 2009

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

1 голос
/ 21 октября 2009

Это зависит от хоста, но обычно вы можете увеличить время выполнения скрипта, используя set_time_limit . Это в сочетании с сбросом данных в CSV-файл является одним из способов. Как указало longneck, 20 тыс. Записей должны быть быстрее, чем 30 секунд, обычно выделяемых для запуска сценариев.

1 голос
/ 21 октября 2009

Работа в пакетном режиме ...

  1. Загрузка 50 адресов в $ i.csv.
  2. перезагрузите ваш сайт (tip: header ()), повторите примерно 400 раз.
  3. скопируйте файлы 400 cvs в один большой файл (даже с помощью блокнота).
  4. Открыть, например. с Excel.
0 голосов
/ 21 октября 2009

Пример кода: (Я уже должен был это сделать)

$static_amount = 100; // 100 Entries to the same time
for($i = 0; $i < $mysql->count(); $i+$static_amount)
{
$toFile[$i] = $mysql->query('SELECT * FROM table WHERE id < $i AND id > $static_amount');
sleep(10); // very important!!!
}

OR

if($_COOKIE['amount'])
{
$_COOKIE['amount'] = 100;
}

$toFile = $mysql->query('SELECT * FROM table WHERE id > $_COOKIE['alreadyPerformed'] LIMIT $_COOKIE['amount']';
setCookie('amount') = 100;
setCookie('alreadyPerformed') = $_COOKIE['alreadyPerformed'] + 100;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...