это кажется, что файл не отмечен как исполняемый файл. Можно появиться в командную строку и использование
chmod +x (file name)
или найти файл в наутилусе, щелкнуть правой кнопкой, перейдите к вкладке полномочий и проверьте, "позволяют выполнять файл как программу" кнопка.
РЕДАКТИРОВАНИЕ: также удостоверьтесь, что корректная хижина присутствует; попытайтесь добавить
#!/bin/bash
к вершине файла
Отслеживание пользователя. Использовать GUID закодирован в файл cookie с n Истечение года.
Хранение сумки для покупок. Вы не хотите хранить пакет в печенье, в основном из-за его возможного размера. Это оставляет возможность сохранить его на носителе и извлечь с него. Использование для этого чего-либо, кроме базы данных, было бы похоже на возвращение во времени, базы данных превосходно хранят и извлекают данные.
Управление вашей сумкой для покупок. Теперь вопрос вашей схемы, во-первых, если вы собираетесь выполнять запросы против сумок в база данных (т.е. сколько покупок в пакетах есть предмет x ) вы, вероятно, хочу традиционных отношений схема. Однако это накладные расходы в плане вставки. обновление, выбор (и присоединение) и удаление данные о сумке (в какой-то момент у вас будет сумки, которые больше никогда не будут использоваться но забирают драгоценный диск пространство). С загруженным сайтом это несколько сделок в секунду, но любая база данных должна иметь возможность справиться. Если вам не нужно запрашивать сумки для покупок в базе данных, тогда вы можете сохранить его как XML. Просто сериализовать сумку и сбросить ее в таблица с PK в качестве GUID как хранится в cookie пользователя. Эта будет намного быстрее, чем традиционная схема, плюс вы могли всегда разрывайте XML в будущее, если возникнет требование для реляционной схемы.
Это то, что мы делаем (Xml Bag), и у нас более миллиона клиентов.
Я бы предпочел сеансы, управляемые базой данных, а не сеансы, управляемые файлами. Убедитесь, что у вас есть временная метка сеанса, чтобы вы могли в конечном итоге закрыть старые сеансы (если прошло 12 месяцев, покупатель, возможно, не вернется за товарами, изначально находящимися в корзине).
Выполнение этого с базой данных вместо файлов приведет к упростить окончание срока действия очень старой информации.
Обратите внимание, что сеанс базы данных будет действителен только до тех пор, пока файл cookie, к которому он привязан, на компьютере пользователя. Если пользователь вернется в магазин из другого браузера, он не найдет свой сеанс. Если два человека используют один и тот же компьютер, они найдут сеанс друг друга. Будем надеяться, что в корзине не будет потенциально неприятных вещей ...
Хранить в файлах cookie идентификатор AnonymousSessionID, с которым вы связываете корзину покупок в базе данных.
Затем у вас будет задача планировщика для удаления анонимных сеансов через некоторое время (скажем, день ). Это позволит очистить вашу базу данных от прерванных сеансов.
Если пользователь регистрируется, вы навсегда повторно связываете его корзину покупок с его учетной записью. Если пользователь делает заказ, вы очищаете его корзину.
С этими спецификациями я бы выбрал состояние сеанса на основе базы данных. Но вам следует внимательно изучить, как состояние сеанса обрабатывается на выбранном вами веб-сервере. Так как вы хотите иметь возможность возродить состояние правильному человеку.
Если вы используете ASP.NET, вот что я (собираюсь) сделать:
Думаю, у вас есть определенные ожидания, которые нужно реализовать, или, может быть, вы не совсем четко сформулировали требования.
- Ребята, работающие с пользовательским интерфейсом, хотят, чтобы вход / аутентификация были самыми последний шаг во всем рабочем процессе. В пользователь может делать все покупки и предлагается войти в систему только во время проверка.
- Срок действия корзины покупок не должен истекать (даже при закрытии браузера) если только пользователь (зарегистрированный или нет)
В частности, сохраняется ли корзина анонимного, не вошедшего в систему пользователя? Это безумие. Убедитесь, что это не ожидание, и поясните это в проектной документации.