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-скрипт может передать этот файл клиенту и удалить после завершения потоковой передачи.