목차
回复讨论(解决方案)
백엔드 개발 PHP 튜토리얼 :多用户同时访问时的问题?

:多用户同时访问时的问题?

Jun 23, 2016 pm 01:48 PM
여러 사용자 입장

请各位大牛不吝指教,先谢过去了!
情况描述如下:

系统结构:1. 界面模块(php) -->2. 中间接口(php) --> 3. 数据库(mysql)
1. 界面模块:显示操作界面及操作结果;
2. 中间接口:负责界面模块和数据库之间的数据交换,及其他功能(跟求助问题无关,不加以描述);

大致流程:从界面模块发送http请求,该请求发送给接口模块,接口模块访问数据库获得数据,返回给界面模块;

问题来了:
界面模块有大量访问用户,这些用户可能同时发送同样的请求给接口,比如:同时编辑某一数据。

问:如何才能避免这种问题?

不知道有没描述清楚,请各大牛赐教,谢谢!


回复讨论(解决方案)

加锁

若业务上允许“同时编辑某一数据”,则以最后提交的为准
否则在收到请求时返回 xxx正在编辑

谢谢斑竹的指教!能详细点吗?合作方要求只能在界面模块进行限制同时编辑某一数据。

在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳
此时再有人想编辑,状态1就拒绝
用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间
当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0

在用户A编辑某条新闻读取成功时,将这条数据的状态字段设为1,记录读取的时间戳
此时再有人想编辑,状态1就拒绝
用户A的页面ajax轮询,每隔几十秒告诉服务器还在编辑并刷新时间
当A编辑提交,或用户B想编辑状态为1,但是最后一次ajax提交的时间和当前差太多,就设置状态为0



谢谢您的回复,我有些疑惑在界面模块可以这样做吗?我曾讨教过一位做了多年php的朋友,他告诉我这没法整。
之前我也想过设置标识,因为无法操作数据库,所以放弃了。

编辑的时候不需要权限么?A发的B也可以编辑么?

编辑的时候不需要权限么?A发的B也可以编辑么?



谢谢您的到来!
编辑的时候需要权限,但可以在线多个有权限的用户进行编辑某一条数据。

不允许同时编辑同一条记录,是业务层面的需求
业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成
你的这个需求还是应在 中间接口 中完成的

不允许同时编辑同一条记录,是业务层面的需求
业务需求的实现,应在 中间接口 中完成。如有特殊需求,也可在 界面模块 完成
你的这个需求还是应在 中间接口 中完成的



感谢版主的再次指教!谢谢“xuzuning”版主!
我描述的还不够细致,重新描述下业务逻辑:
界面层的功能包括:数据显示,数据编辑请求,操作用户的管理等,且界面层有操作用户的数据库。
中间接口层:处理界面层的请求,无视操作用户,不管哪个操作用户的操作请求,中间接口层都视为合法。

我感觉版主您的意思是在中间接口层处理,然后不管谁发过来的请求,请求过来,标识锁定,返回结果后再标识解锁?
我之前也是这样认为的,因为第一次接触php, 对方是老手,所以不敢确定。

对方非得要我在界面层来处理该业务,说用ajax就可以, 但我觉得我无法去设标识,所以困惑,才有此问。

再次感谢版主的指教!

放在 中间层 比较合适
因为一般的说,中间层就是通常说的 API 
加一个过滤条件比较简单

当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了

放在 中间层 比较合适
因为一般的说,中间层就是通常说的 API 
加一个过滤条件比较简单

当然在界面层也可以实现,不过界面层不宜(不能)直接访问数据层。
所以要单独设置缓存机制,未处理完的就不再向中间层发请求
用一个共享内存或数据库或文件的队列就可以了



太感谢了,清晰很多了,谢谢!!!
结贴,呵呵。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

iOS 17: 사진에 액세스할 수 있는 앱을 제어하는 ​​방법 iOS 17: 사진에 액세스할 수 있는 앱을 제어하는 ​​방법 Sep 13, 2023 pm 09:09 PM

iOS17에서 Apple은 앱이 사진에서 볼 수 있는 내용을 더 강력하게 제어할 수 있습니다. 앱별로 앱 액세스를 관리하는 방법을 알아보려면 계속 읽어보세요. iOS에서는 Apple의 앱 내 사진 선택기를 사용하여 특정 사진을 앱과 공유하고 나머지 사진 라이브러리는 비공개로 유지할 수 있습니다. 앱은 전체 사진 라이브러리에 대한 액세스를 요청해야 하며 선택적으로 앱에 다음 액세스 권한을 부여할 수 있습니다. 제한된 액세스 – 앱은 선택할 수 있는 이미지만 볼 수 있으며, 이는 앱에서 언제든지 또는 설정 > 개인 정보 보호 및 보안>사진을 클릭하면 선택한 이미지를 볼 수 있습니다. 전체 액세스 - 앱에서 사진을 볼 수 있음

Java에서 JSONNode의 JSON 필드, 배열 및 중첩 개체에 액세스하는 방법은 무엇입니까? Java에서 JSONNode의 JSON 필드, 배열 및 중첩 개체에 액세스하는 방법은 무엇입니까? Aug 30, 2023 pm 11:05 PM

JsonNode는 JSON을 JsonNode 인스턴스로 읽고 JsonNode를 JSON으로 쓸 수 있는 Jackson의 JSON 트리 모델입니다. Jackson을 사용하면 ObjectMapper 인스턴스를 생성하고 readValue() 메서드를 호출하여 JSON을 JsonNode로 읽을 수 있습니다. JsonNode 클래스의 get() 메서드를 사용하여 필드, 배열 또는 중첩 개체에 액세스할 수 있습니다. asText() 메서드를 사용하여 유효한 문자열 표현을 반환하고 JsonNode 클래스의 asInt() 메서드를 사용하여 노드의 값을 Javaint로 변환할 수 있습니다. 아래 예에서는 Json에 액세스할 수 있습니다.

Python을 사용하여 다양한 오디오 및 비디오 파일의 메타데이터에 액세스 Python을 사용하여 다양한 오디오 및 비디오 파일의 메타데이터에 액세스 Sep 05, 2023 am 11:41 AM

Python의 Mutagen 및 eyeD3 모듈을 사용하여 오디오 파일의 메타데이터에 액세스할 수 있습니다. 비디오 메타데이터의 경우 Python에서 영화와 OpenCV 라이브러리를 사용할 수 있습니다. 메타데이터는 오디오, 비디오 데이터 등 다른 데이터에 대한 정보를 제공하는 데이터입니다. 오디오 및 비디오 파일의 메타데이터에는 파일 형식, 파일 해상도, 파일 크기, 지속 시간, 비트 전송률 등이 포함됩니다. 이 메타데이터에 액세스함으로써 미디어를 보다 효율적으로 관리하고 메타데이터를 분석하여 유용한 정보를 얻을 수 있습니다. 이 기사에서는 오디오 및 비디오 파일의 메타데이터에 액세스하기 위해 Python에서 제공하는 일부 라이브러리 또는 모듈을 살펴보겠습니다. 오디오 메타데이터에 액세스 오디오 파일 메타데이터에 액세스하기 위한 일부 라이브러리는 다음과 같습니다.

Tomcat이 war 패키지를 배포한 후 접근성 문제를 해결하는 방법 Tomcat이 war 패키지를 배포한 후 접근성 문제를 해결하는 방법 Jan 13, 2024 pm 12:07 PM

Tomcat이 배포 후 war 패키지에 성공적으로 액세스할 수 없는 문제를 해결하려면 특정 코드 예제가 필요합니다. 널리 사용되는 Java 웹 서버인 Tomcat을 사용하면 개발자가 자신이 개발한 웹 애플리케이션을 배포용 war 파일로 패키징할 수 있습니다. 그러나 때로는 잘못된 구성이나 다른 이유로 인해 war 패키지에 성공적으로 액세스할 수 없는 문제가 발생할 수 있습니다. 이 기사에서는 이 딜레마를 해결하는 몇 가지 구체적인 코드 예제를 제공합니다. 1. Tomcat 서비스 확인

PHP 개발 시 외부 리소스 액세스 및 호출을 해결하는 방법 PHP 개발 시 외부 리소스 액세스 및 호출을 해결하는 방법 Oct 08, 2023 am 11:01 AM

PHP 개발에서 외부 리소스에 액세스하고 호출하는 문제를 해결하려면 특정 코드 예제가 필요합니다. PHP 개발에서는 API 인터페이스, 타사 라이브러리 또는 기타 서버 리소스와 같은 외부 리소스에 액세스하고 호출해야 하는 상황에 자주 직면합니다. . 이러한 외부 리소스를 처리할 때 성능과 안정성을 보장하면서 안전하게 액세스하고 호출하는 방법을 고려해야 합니다. 이 문서에서는 몇 가지 일반적인 솔루션을 설명하고 해당 코드 예제를 제공합니다. 1. 컬 라이브러리를 사용하여 외부 리소스를 호출합니다. 컬은 매우 강력한 오픈 소스 라이브러리입니다.

Windows 7에서 파일 수정 시 액세스 거부 문제를 해결하는 방법 Windows 7에서 파일 수정 시 액세스 거부 문제를 해결하는 방법 Jul 04, 2023 pm 07:01 PM

Win7에서 파일을 수정할 때 액세스 거부 문제를 해결하는 방법은 무엇입니까? 일부 시스템 파일을 수정할 때 작업을 수행할 권한이 없다는 메시지가 자주 표시됩니다. 폴더 권한을 끄거나 관리자 권한을 얻을 수 있습니다. 이러한 파일을 수정해야 하는 사용자는 다음의 자세한 튜토리얼을 살펴보시기 바랍니다. win7에서 파일을 수정할 때 액세스가 거부되는 문제에 대한 해결 방법: 1. 먼저 해당 폴더를 선택하고 위의 도구를 클릭한 다음 폴더 옵션을 선택합니다. 2. 보기 탭으로 들어갑니다. 3. 단순 파일 공유 사용을 선택 취소하고 확인합니다. 4. 그런 다음 해당 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다. 5. 보안 탭으로 들어갑니다. 6. 아이콘 위치를 선택하고 고급을 클릭합니다. 7

Windows 10 Home Edition에서 공유 폴더에 액세스할 수 없는 경우 수행할 작업 Windows 10 Home Edition에서 공유 폴더에 액세스할 수 없는 경우 수행할 작업 Jan 11, 2024 pm 07:36 PM

폴더 공유는 실제로 가정이나 회사 네트워크 환경에서 매우 유용한 기능입니다. 이를 통해 다른 사용자와 폴더를 쉽게 공유할 수 있으므로 파일 전송 및 공유가 쉬워집니다. Win10 Home Edition 공유 폴더에 접근할 수 없습니다. 해결 방법: 해결 방법 1: 네트워크 연결 및 사용자 권한 확인 Win10 공유 폴더를 사용하려면 먼저 네트워크 연결 및 사용자 권한이 정상적인지 확인해야 합니다. 네트워크 연결에 문제가 있거나 사용자에게 공유 폴더에 대한 접근 권한이 없는 경우 접근이 불가능할 수 있습니다. 1. 먼저, 컴퓨터와 공유 폴더가 위치한 컴퓨터가 동일한 LAN에 있고 정상적으로 통신할 수 있도록 네트워크 연결이 원활한지 확인하십시오. 2. 두 번째로 사용자 권한을 확인하여 현재 사용자에게 파일 공유 권한이 있는지 확인하세요.

HTML5에서만 카메라 장치 액세스 허용 HTML5에서만 카메라 장치 액세스 허용 Sep 22, 2023 pm 11:09 PM

iOS에서는 카메라 장치에 대한 고유한 액세스 권한이 없습니다. 공식 사양 권장 사항은 다음과 같습니다. - 이 사양의 사용자 에이전트 구현은 마이크나 카메라를 통해 콘텐츠 캡처를 시작하기 전에 사용자 동의를 구하는 것이 좋습니다. 이는 사용자 데이터 개인 정보 보호와 관련된 규제, 법률 및 모범 사례 요구 사항을 충족하는 데 필요할 수 있습니다. 또한 입력 장치가 활성화되면 사용자에게 표시를 제공하고 사용자가 이러한 캡처를 종료할 수 있도록 하는 사용자 에이전트 구현이 권장됩니다. 마찬가지로, 사용자 에이전트는 여러 장치가 있는 경우 사용할 정확한 미디어 캡처 장치를 사용자가 선택할 수 있도록 허용하는 등의 사용자 컨트롤을 제공하는 것이 좋습니다. 비디오 캡처 모드에서 사운드 캡처를 비활성화합니다.

See all articles