나는 꽤 오랫동안 PHP 응용 프로그램을 개발해 왔습니다. (기본) 아이디어는 다음과 같습니다. 사용자는 블록을 사용하여 웹 페이지를 작성할 수 있습니다. 이 블록에는 이미지, 텍스트 등이 포함될 수 있습니다.이 블록들 각각에는 고유 한 옵션이 있습니다. 이러한 블록은 PHP를 통한 도메인 기반 디자인에 정의되어 있습니다.PHP : 최선의 방법은 앞으로 [serialization, objects, Redis]
jQuery/Javascript 프런트의 요청을 처리하는 PHP 기반 컨트롤러를 사용하도록 애플리케이션을 빌드했습니다. 사용자가 옵션을 편집 할 때마다 Redis 및/또는 php-session에서 블록 (php-objects)의 컬렉션을 unserialises하고 편집되거나 추가/제거되는 블록의 속성을 설정하는이 컨트롤러로 보내집니다. 블록. 이것은 도메인 논리를 시행하는 것입니다.
내 자신을 위해 발전한 것은 괜찮 았습니다. 나는 경쟁 조건 등을 결코 염두에 두지 않았습니다. 제품으로 전진하면서 사람들이 데이터를 잃어 버렸음을 알았습니다. 나는 어떻게되는지 설명 할 것이다.
- 사용자는
- 자신의 UUID
- 을 기반으로 수집 및
- 세트 블록을 unserialises,
- 눌러
- 요청이있는 컨트롤러로 구성되어 저장 블록의 옵션을 편집 컬렉션에 블록을 다시 넣고
- 은 컬렉션을 다시 serialize합니다.
2 개의 동시 요청이 생성되어 두 요청 중 1 개를 수정하는 시나리오가 있습니다.
나는이 응용 프로그램 부분을 다시 작성해야한다는 것을 알고 있습니다. 문제는 최선의 접근 방법입니다. 나는 할 수 있었다.
- 응용 프로그램의 전체 부분을 다시 작성해야하기 때문에 많은 작업이 필요한 자바 스크립트 라이브러리를 구현하십시오. 또한 자바 기반 솔루션을 구현하는 데 많은 경험이 없습니다. 그러나 나는 새로운 것을 밟을 수는 없습니다. 자바 스크립트 테스트를 통해 미래의 문제가 발생하지 않도록하고 크로스 브라우저 테스트를 활성화합니다.
- 컨트롤러가 단일 요청을 처리하고 동시 요청이 이전 요청의 데이터 세트를 덮어 쓰지 못하도록하는 Redis/Session locking을 적용합니다. 이렇게하면 동시 요청 및 데이터 손실 가능성은 낮아 지지만 완전히 저하되지는 않습니다. 실제 인터넷 연결 속도가 느린 사용자는 동시 요청이 많을 때 연결이 끊어 질 수 있습니다.
나는 다른 접근법이 무엇인지, 또는 내가 위에서 언급 한 두 가지 중 하나가 충분할지 궁금하다.
많은 좋은 질문은 전문가 경험을 토대로 어느 정도의 의견을 제시하지만이 질문에 대한 답변은 사실, 참고 문헌 또는 특정 전문 지식보다는 의견을 기반으로하는 경향이 있습니다. 일반적으로 문제를 해결하기위한 개발 포럼 (예 : [quora] (http://www.quora.com/Computer-Programming))을 찾고 싶을 수 있습니다. 그런 다음/특정 코딩 문제가있는 경우 StackOverflow로 돌아와서 도와 드리겠습니다. –