2012-03-07 5 views
0

Я ищу в Интернете и, видимо, нет возможности запустить php-скрипт без взаимодействия с пользователем.Может ли скрипт запуска php без взаимодействия с пользователем для взаимодействия с базой данных?

Немногие советники рекомендуют мне Крон, но я не уверен, что это правильный путь.

Я создаю сайт, на котором возможны аукционы, как ebay. И через некоторое время объекты больше не доступны, и аукцион считается завершенным.

Я хотел бы знать способ взаимодействия с базой данных автоматически.

ответ

2

Когда вам нужно знать, доступен ли объект? -> Только если кто-то спросит.

И тогда у вас есть взаимодействие с пользователем, которое вы ищете.

Это что-то другое, если вы хотите, допустим, отправить электронное письмо победителю аукциона. В этом случае вам нужно установить определенный таймер на время окончания аукциона. Самый простой способ сделать это - это работа cron ...

1

Существует несколько способов сделать это. Cron является допустимым одним из них, и тот, который я бы рекомендовал, если он доступен.

Другим является проверка перед обработкой каждого запроса, связанного с объектом, если он все еще действителен. Если это не так, вы можете удалить его из базы данных «на лету» (или сделать все, что вам нужно) и отобразить другую страницу.

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

1

Для редактирования cronjobs из оболочки: crontab -e

задание запускается каждые 10 минут: */10 * * * * curl "http://example.com/finished.php"

TheGeekStuff.com cron Examples

0

Использование сердцебиения/бот реализовать Ation

0

Cron работу, которая работает довольно часто или программа, которая запускается при загрузке и работает непрерывно (может быть, спать периодически) - это путь. С помощью задания cron вам нужно убедиться, что у вас нет двух запусков в любой момент времени или написано так, что не имеет значения, есть ли у вас более одного работающего в любой момент времени. С помощью «резидентной» программы вам нужно будет выяснить, как обращаться с делом, когда он неожиданно аварийно завершает работу.

Я бы не стал полагаться на этот механизм, чтобы фактически закрыть аукцион. Это должно быть обработано в вашей базе данных/веб-сайте. То есть аукцион имеет близкое время, и либо ограничения базы данных, либо ваш код не позволяют делать ставки на закрытом аукционе. Уведомление победителя и продавца, настройка процесса оплаты и т. Д. - это то, что может выполнить ваша служба/запланированная задача.

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