2013-03-13 2 views
1

В настоящее время я работаю над приложением Facebook, и мне нужно сделать следующее: Создайте хэш, содержащий поля «ключ», «пользователь» и «ссылка». Поле link должно содержать строку, то есть адрес json-файла.Хостинг файлов на heroku

Теперь моя проблема заключается в следующем: я собираю данные из facebook и сохраняю их в json-файле. Как создать файл DIRECLTY на heroku, как-то как в папке, когда отправляется событие (например, пользователь нажимает кнопку) и помещает URL-адрес в хэш в поле ссылки? Мое местоположение должно, вероятно, выглядеть как .../[user]/myfile.json

Или, если не героику, можете ли вы предложить другой хозяин, где я могу сделать то же самое?

Примечание: Я только начинаю работу с базами данных, у меня есть только очень простой Знание SQL и база данных еще не закончена. Я ничего не знаю о postgres, но я могу узнать, если это предпочтителен. Мое приложение в основном разработано с php.

ответ

2

Как @hakre сказал, Heroku работает приложений на Ephemeral filesystem. Это означает, что ваше местное хранилище будет потеряно при перезапуске экземпляра.

В зависимости от данных, которые вы хотите сохранить, есть несколько вариантов его сохранения.

  1. Cookie: отправьте его в файл cookie и пусть браузер позаботится об этом. Это жизнеспособно, если данные создаются пользователем и в какой-то момент истекает.
  2. PostgreSQL: Если вы используете базу данных SQL в своем приложении, она может туда попасть. Либо в качестве десериализованной строки, либо поля TEXT.
  3. CDN: Если данные должны быть общедоступными для всех, вы можете загрузить их, например, Amazon S3 или Rackspace CloudFiles и опубликовать контейнер. Затем вы можете обратиться к нему по URL-адресу.
  4. Облачное хранилище. Если для данных требуется некоторое управление доступом, вы все равно можете загрузить его на S3 или CloudFiles и вытащить его там программно, когда он будет запрошен. Если есть проблема с производительностью, вы можете кэшировать ее в Memcache или в некоторых других аддонах кэша.
  5. База данных документов: MondoDB и CouchDB хранить данные как документы JSON. У обоих есть много возможностей. Запись и чтение - это элементарные операции для обоих. Если вам нужна история версий, то CouchDB делает это за вас (по умолчанию хранятся все версии JSON.
  6. Локальное хранилище браузера. Теперь вы можете хранить данные в браузере, когда у нас есть HTML5. Это немного кровоточащий край и не будет работать на некоторых старых браузерах все еще вокруг.

есть много других способов хранения ваших JSON документов на других, чем файл места. это всего лишь верхушка айсберга.

+0

Мне нужно сохранить их в файле. Пользователь должен иметь доступ к файлу, чтобы он его сохранил, и через некоторое время загружает файл обратно, чтобы мое приложение могло его обработать. Спасибо за советы. Я буду использовать S3, вероятно, – MihaiB

+0

Помните: загрузка и загрузка файла не означает, что вы должны хранить их в файлах. HTTP - это просто текст с заголовками. – ferrix

+0

Можете ли вы предложить что-то более эффективное, пожалуйста? Я пытаюсь сделать следующее: Пользователь сохраняет данные в json-файле и не заботится о том, где он хранится. Через некоторое время он/она должен загрузить этот файл где-то в другом месте, а данные из файла будут использованы. – MihaiB

2

Чтобы создать файл непосредственно на heroku, вам необходимо создать файл в исходном дереве, а затем он будет сохранен на героку при публикации приложения.

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

Вам необходимо создать эти «файлы» в базе данных или в других удаленных местах, таких как Amazon S3.

Смотрите так же:

+0

Мое приложение должен позволить пользователю получить json с данными из его учетной записи, а затем получить его позже, поэтому, вероятно, мне нужно будет разместить их на Amazon 3S, потому что пользователь должен позже загрузить его при вводе ключа из «ключевое» поле. Отличный ответ, спасибо большое – MihaiB

+0

Все, что вам нужно для хранения «на потом», вам нужно положить в удаленное место, да. Хероку не держит его дольше. [* Heroku Ephemeral filesystem *] (https://devcenter.heroku.com/articles/read-only-filesystem) является ключевым моментом здесь. – hakre

+0

Ну, если я думаю об этом, во всяком случае, это не будет хорошо хранить его на герою, так как есть только 100 Мб свободного места – MihaiB

Смежные вопросы