PHP와 Mysqli로 작성된 복잡한 데이터베이스 응용 프로그램을 작성 중입니다. 대규모 데이터베이스 작업의 경우 백그라운드에서 작동하는 데몬 (PHP도 있음)을 사용하고 있습니다. 이러한 작업 중에 몇 분이 걸릴 수 있지만 사용자가 영향을받는 데이터에 액세스하지 못하도록하고 대신 메시지를 표시하려고합니다.PHP/MySQL : 행을 임시로 삽입하십시오.
특정 데몬 작업이 발생할 때마다 Mysql 테이블을 만들고 행을 삽입하는 방법에 대해 생각했습니다. 그런 다음 데이터에 액세스하는 동안 특정 작업이 수행되는지 항상 확인할 수 있습니다.
그러나 물론, 데몬 프로세스가 어떤 이유로 든 종료되면 (콘솔에서 죽이거나 데이터베이스 연결이 끊어 지거나 플러그가 풀리는 등) 레코드가 데이터베이스에 남아 있지 않는 것이 중요합니다. Mysql 트랜잭션/롤백은 변경을 공개하고 레코드가 종료되면 데이터베이스에 남아 있기 때문에 커밋이 필요하기 때문에이를 수행 할 수 있습니다.
프로세스가 종료되면 레코드가 삭제되도록하는 방법이 있습니까?
모든 데몬이 한 서버에서 호스팅됩니까? – arik
예, 모든 것이 현재 한 서버에서 호스팅됩니다. 그러나 응용 프로그램이 공개되면 데이터베이스를 별도의 서버로 이동합니다. – 1nsane
데이터베이스의 서버에 관계없이 모든 데몬이 하나의 서버에있는 경우 간단히 파일을 업데이트하고 업데이트 시간을 기록 할 수 있습니다. 파일에 저장된 시간 소인이 10 초 미만인지 여부를 점검하고, 그렇다면 조치를 허용하지 마십시오. 그렇게하면 실행중인 데몬에서 해당 파일을 간단히 업데이트해야하며 정통성을 잃어 버리지 만 나중에 처리하는 데 영향을 미치지 않습니다. – arik