mySql INTO OUTFILE проблема с php

Я использую mySql INTO OUTFILE для создания файла с данными sql.

$wpdb->query("SELECT * INTO OUTFILE 'result.sql'  FROM ". DB_PHOTOS .";");

Теперь я хочу загрузить файл на клиентскую сторону (с помощью PHP). Так как это плагин WordPress, я не хочу быть привязанным к конкретному месту (например, c:/result). Как мне получить этот файл с помощью PHP и загрузить его?

2 ответа

Решение

Форма руководства mysql:

Оператор SELECT ... INTO OUTFILE предназначен, прежде всего, для того, чтобы вы могли очень быстро вывести таблицу в текстовый файл на сервере. Если вы хотите создать результирующий файл на каком-либо другом хосте, отличном от хоста сервера, вы обычно не можете использовать SELECT ... INTO OUTFILE, поскольку нет способа записать путь к файлу относительно файловой системы хоста сервера.

Это означает, что вы можете выгрузить файл в определенное место, если ваши php и mysql находятся на одном и том же локальном компьютере, а затем переместить файл в лучшее место или обслуживать его напрямую, как readfile()

Это правда, что это не будет использоваться, если БД и веб-серверы находятся на разных компьютерах. Зависит от того, что вы намерены использовать теоретически mysql -e "SELECT ..." > file_name через вызов system() для создания файла локально, но он также не универсален.

Каталог "temp" позволяет писать практически на всех хостинг-провайдеров. Одним из решений является запись в "/tmp" (Linux) или%TEMP% (Windows).

Как только это будет сделано, PHP-скрипт может передать этот файл клиенту и удалить после завершения потоковой передачи.

Другие вопросы по тегам