WordPress에서 내 클라이언트가 빌드하도록 요청한 콘텐츠 리퍼 사용자 지정 플러그인을 만들고 있습니다. 그는 페이지 뷰 이벤트를 잡기를 원하고 그것이 마지막 시간 (24 시간 지난 게시물)이라면 자원 파일을 가져 와서 다른 게시물을 출력하기를 원한다고 말합니다. 그는 플래그를 올리고 다른 세션이 동일한 코드 스 니펫을 실행하지 못하도록해야했습니다. 따라서, "나는 그 글을 게시하고 다른 프로세스를 떠나고있다"는 플래그를 올리면 그 글이 생성되어 다시 플래그가 해제됩니다.WordPress 쓰기 캐시 문제가 여러 번 발생했습니다.
그러나 부하가 걸려 여러 세션이 페이지 뷰로 사이트에 연결되면 가장 이상한 일이 발생합니다. 그것은 하나의 게시물 대신에 발사됩니다. 1, 2 또는 3 개의 추가 게시물을 무작위로 처리합니다. 각 게시물은 마지막 게시물 시간보다 24 시간 늦었 기 때문에 게시 할 적절한 시간이라고 생각합니다. 다소 무작위 적이기 때문에 문제는 몇 초 동안 제기 된 플래그를 아직 보지 못한 다른 유형의 쓰기 캐싱이라고 추측합니다.
플러그인이 WordPress의 update_option() API를 사용하여 wp_options 테이블에 간단히 작성하여 "플래그"를 높이고있었습니다. 다른 사용자 세션은 get_option()을 사용하여 해당 값을 읽고 플래그를보고, 주어진 세션이 이미이를 수행했기 때문에 게시물을 생성하는 코드 조각을 실행하지 않아야했습니다. 그런 다음 완료되면 플래그를 낮추고 다른 세션은 정상적으로 계속됩니다.
그러나이 작업을하려면.
에 그 다른 세션을시키는 무엇은하고있어, 내가 ADD_ACTION를 사용했다 ('loop_start을', 'checkToAddContent'). 그 함수에 대한 이상한 점은 페이지에서 한 번 이상 호출된다는 것입니다. 실제로 일부 플러그인은이를 호출 할 수 있습니다. 나는 더 좋은 사건이 있는지 모르겠다. 심지어 여전히 페이지 뷰에서 한 번만 실행되는 후크 할 이벤트가 발견 되더라도 여러 세션 (동시에 다른 페이지를 볼 수있는 여러 사용자)이 있고 특정 세션이 하나만 트리거되기를 원합니다. 게시물이 예정대로 만기 될 때 내용 게시.
워드 프레스 플러그인이 있다면 거기에 래치 할 다른 이벤트 후크를 제안하고 모든 세션에서 볼 수있는 플래그를 올리는 다른 방법을 찾아 낼 수 있는지 궁금합니다. 내 말은, PHP에서 공유 메모리 API를 사용할 수 있지만, 많은 호스팅 계획에서 장애가 발생했습니다. 그게 하나의 단일 세션이기 때문에 쿠키 또는 세션 var을 사용할 수 없습니다. 대신 호스팅 계획에서 작동 할 수있는 유일한 방법은 파일을 플래그로 놓는 것입니다. 파일이 있으면 하나의 세션에 플래그가 있습니다. 파일이 없으면 다른 세션에서 플래그를 가져올 수 있습니다. 물론, 나는 파일 경로를 사용할 수 있지만 내 의견으로는 미성숙하고 WordPress에 내가 할 수있는 것이 있는지 궁금해하고 있었다.
이의 트위터와 같은 버전의 화면 반전 테이블 FROM 세션 id SELECT : 워드 프레스의 깃발을 올릴 수있는 방법이 무엇을 모든 세션에서 볼 수 있습니까? update_option()에 대기 시간이 있습니다. 다른 세션은 제 시간에 그것을보고 있지 않습니다. – Volomike
조금 더 따라 갔다. 누군가 'loop_start'를 피하고 'wp'이벤트를 사용하라고 제안했습니다. 그런 다음 해당 이벤트 내에서 is_single() || is_page() || is_home() || is_archive() || is_category() || is_tag()) {// 여기에 코드를 추가하십시오. 여전히 플래그 문제는 해결되지 않지만 페이지 뷰 당 한 번만 실행되므로 더 나은 이벤트입니다. – Volomike