2012-12-17 1 views
-2

PHP에서 함수를 모든 사용자가 사용하는 횟수를 계산하는 함수를 만들려고합니다. 이 기능이 사용 된 경우PHP 웹 환경에서 글로벌 타이머 설정

,의는, 30 번 가정 해 봅시다, 다음 몇 분 동안 액세스를 차단해야하고 0

에 카운터를 재설정이 PHP에서 할 수 있습니까?

+0

나는 아직도 그것을 만드는 방법을 생각하고있어, 카운터 부분을하기가 어렵지 않아야한다. 어쩌면 내가 파일에 요청 번호를 저장하고 매번 가져올 수 있지만,이 방법은 피하고 싶다. . 무엇보다 가장 걱정스러운 부분은'sleep()'함수를 사용하는 타이머 부분 일지 모르지만, 이것이 모든 사람이 아니라 단 한 명의 사용자에게만 영향을 줄 수 있습니다. – Vektor88

+1

카운터 값 옆에 타임 스탬프를 저장하십시오. 이번에는 모든 프로세스가 동일한 시간 제한 값을 고려할 수 있습니다. – arkascha

답변

2

모든 사용법이 단일 프로세스 내에서 발생하는 경우 이는 아무런 문제가되지 않습니다. 방금 전역 변수 또는 정적 카운터 변수를 사용하여 증가시킵니다. 프로세스가 실행되는 동안 해당 값에 액세스 할 수 있습니다.

그러나 나는 웹 환경과 PHP 서버가 실행하는 스크립트의 일부인 PHP 함수에 대해 이야기하고 있다고 가정합니다. 죄송합니다.하지만 언급하지 않으셔도됩니다 ...

이 경우 더 이상 하나의 프로세스가 아니기 때문에 상황이 더 복잡해집니다. 일종의 영구 저장 장치가 필요합니다. 일반적인 시나리오에서는 데이터베이스, 파일 또는 공유 메모리를 사용합니다. 이를 통해 서로 다른 프로세스가 공유 카운터 값에 액세스 할 수 있습니다.

+0

예, 동시 요청이있는 웹 환경에 있습니다. DB 또는 파일과 다른 솔루션이 있는지 궁금한 점이 있지만 그렇지 않은 것 같습니다. – Vektor88

+0

그럼 공유 액세스를 위해 어떤 솔루션을 선택합니까? 요구 사항은 무엇입니까? – arkascha

+0

나는 트랜잭션 MySQL DB 쿼리로만 생각할 수 있습니다 – Vektor88

1

어쨌든 데이터베이스를 사용한다면 가장 쉬운 방법은 데이터베이스 테이블의 값을 증가시키는 것입니다. 동일한 단계에서 타임 스탬프를 저장할 수도 있습니다. 이후 (증가 된) 값은 다음 호출 함수에서 쉽게 읽을 수 있습니다. 데이터베이스가없는 경우 텍스트/XML 파일을 사용할 수도 있습니다.

+0

이것은 해결책 일 수 있지만 모든 요청시 파일에서 데이터를 가져 오거나 쿼리하지 않는 것이 효율적이지 않습니다. – Vektor88