2012-06-14 2 views
3

사용자가 컴퓨터를 선택하고이 컴퓨터를 사용할 시간을 선택하는 컴퓨터 예약 시스템을 만들려고합니다. 그 시간에 다른 사람 이이 PC를 예약 할 수 없습니다, 나는 솔루션을 찾을 필요가 어떻게 automaticaly 예약 된 PC를 포함하는 모든 행을 삭제하는 시간이 만료 후. 조언 감사합니다.지정한 시간 후에 MySQL 행을 제거하십시오.

답변

4

이 만 제안 할 수있는 검증되지 않은 대답이지만, 난 그냥이보고 시작, 그래서뿐만 아니라 피드백에 관심이 : 그런 다음 실행됩니다 PHP 파일 내에서, 당신은 할 수 있습니다. 나는 가능성과 단점을 해결하기 위해 노력하고 있지만, 당신의 필요에 잘 맞을 것입니다.

MySQL 이벤트를 살펴보면이 기사는 here이며 공식 구문은 Mysql Docs입니다.
문서 별 :

이벤트는 트리거와 유사합니다. 그러나 데이터 변경에 대한 응답으로 응답을 실행하는 대신 일정 기간 동안 숫자 을 실행하도록 일정을 예약 할 수 있습니다. 결과적으로 데이터베이스 전용 cron 작업입니다.

이 문제를 숙고하면> 1hr (만료일 경우)을 삭제하는 절차가 필요합니다.이 절차는 새 인서트에서 그 순간 만료 된 항목을 없애기 위해 트리거되지만, 도 15 분마다 실행하여 트리거에 의한 자동 삭제가 다른 사람에게 예약을 추가하지 않도록합니다 그 절차를 시작하십시오.

+0

실제로 행을 삭제하려면 'delete from ... where ...'가 포함 된 프로 시저를 호출하는 이벤트를 사용하면 정말 잘 작동합니다. 이벤트가 자주 자주 꺼 지도록 일정을 잡으십시오. 반면에 다른 답변과 같이 시작 및 종료 시간을 사용하면 모든 예약에 대한 기록을 유지하게됩니다. 당신이 필요로하는 것에 달려 있습니다. – Windle

4

서버가 리눅스 인 경우 cron jobs을 사용하여 예약 날짜마다 하루에 한 번씩 확인할 수 있습니다. 이 날짜가 만료 된 경우 수정 된 필드 예약을 사용할 수 있습니다.

5

이 문제를 해결하는 일반적인 방법은 reservation 행에 expires_at 타임 스탬프를 저장하는 것입니다. 그런 다음 "열린"예약을 찾으려면 WHERE 'expires_at' < NOW() 또는 이와 비슷한 것이 있습니다.

3

는 일반적으로 나는 이런 식으로 할 것이다 :

  • 가 저장 date_fromdate_to 데이터 형식을 모두 예약을 저장 DATETIME
  • 모든 컴퓨터에 컴퓨터 무료 검사가 있는지 확인하고 WHERE '{$my_date}' >= date_to AND '{$my_date}' <= date_from와 필터 - 이것으로 당신은 특정 시간 내에 예약되지 않은 모든 PC를 얻을 수 있어야합니다 ...
+2

우리 호텔 예약 시스템을 썼다. 시간당 객실을 판매하지 않기 때문에 'DATETIME'대신에 날짜 만 사용한다. – Mike

1

해결책을 완료하려면 CRON 작업 wh ich는 reservation_time + (15 * 60) < unix_timestamp()가있는 모든 예약을 제거하는 쿼리를 호출합니다.

예약이 시작되었거나 시작되었으며 UNIX/Epoch Timestamps를 사용하고 있다고 가정합니다.

대신 당신이 항상 15분 즉, 일정 간격 될 것입니다 알고있는 경우 expires_now을하고, 당신은 할 수 있습니다 : 당신이에 볼 수 있었다

DELETE FROM reservations WHERE reservation_time + (15 * 60) < unix_timestamp() 

뭔가 관리 크론 작업의 PHP, http://www.highonphp.com/cron-job-manager에서입니다.

위 스크립트는 예약이 생성되면 /etc/cron.d/에 항목을 삽입하고 예상되는 예약 종료 시간에 실행되도록 구성 할 수 있습니다.

DELETE FROM reservations WHERE id = :id 
관련 문제