Heroku deploy удаляет файлы сервера автоматически?

Я новичок в HEROKU APPS.

в моем приложении heroku у меня есть проблема. то есть я использую PHP-скрипт для сохранения данных на сервере.

пример :

<?PHP

$file = "example.txt";

$data = "Something...";

file_put_contents($file,$data);

?>

этот скрипт PHP успешно работает и отлично сохраняет данные.

но, когда я развертываю свое приложение в HEROKU обновить -> в это precess example.txt файл автоматически удаляется.

3 ответов


Файловые Системы Heroku

поведение Heroku варьируется в зависимости от используемого вами стека. С Bamboo большая часть файловой системы -только для чтения. С Кедром это эфемерные.

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


Heroku не предоставляет место на жестком диске для постоянных файлов между git pushes, вам придется использовать что-то вроде Amazon S3 для хранения файлов. Вот почему Heroku называет их файловую систему эфемерные файловой системы. Он был даже доступен только для чтения в более ранних версиях стека.

Heroku имеет учебник по этому вопросу:использование AWS S3 для хранения статических активов и загрузки файлов


пожалуйста посмотреть документы:

эфемерные файловой системы

каждый dyno получает свою собственную эфемерную файловую систему с новой копией последнего развернутого кода. Во время жизни dyno его запущенные процессы могут использовать файловую систему в качестве временной блокнота, но никакие записанные файлы не видны процессам в любом другом dyno, и любые записанные файлы будут отброшены в момент остановки dyno или возобновленный.

таким образом, вы не можете сэкономить много с Heroku dyno. Особенно после того, как вы нажали свою новую версию, dyno перезапускается, и файловая система сбрасывается.

вам нужно хранить файлы в удаленном месте, а затем, если они должны пережить сброс dyno.