Extra Form
PHP PHP 7.2
CMS Rhymix

 

sql 로 삭제하려고했지만 이렇게 삭제하면 잔재하는 첨부파일도 남는다고 해서 수동으로 삭제중입니다.

 

그런데 게시글을 삭제하려고하니 100개정도만 삭제되고 에러창이 뜨네요.

 

AJAX communication error while requesting document.procDocumentManageCheckedDocument

 

검색을 해봐도 정확한 문제 해결 방안이 없어서 이 문제에 대해 해결방안을 찾습니다.

게시글을 1000~2000개 정도를 한꺼번에 삭제하려고하는데 이렇게 삭제하면 안되는건지

 

아니면 무엇이 앞을 가로막고 있는지 궁금합니다.

  • Lv23
    이렇게 삭제했다는 말씀이 어떻게 삭제 하신건가요?
  • Lv23 ? Lv7
    https://xetown.com/questions/1434845
    해당 글에 달린 댓글을 보고 이런식으로 삭제하면 안되는거같아서

    일일이 눈으로 보고 수동으로 삭제중입니다.
    그런데 2000개 가량 선택하고 삭제를 누르면 100개 정도 삭제하고 에러창이 팡 떠버리더군요.

    그래서 지금 에러창확인을 누르고 새로고침후 다시 삭제하면서 100개씩 삭제중이긴합니다만..
    에러창이 안뜨고 한꺼번에 삭제하는 방법을 모르겠습니다
  • Lv23
    우선 procDocumentManageCheckedDocument 라고 뜨는것 보니까 게시글 채크한다음 삭제를 진행하시는 것 같습니다.

    각각 한페이지씩 삭제 처리 하시길 권장합니다.

    전체적으로 모두 선택후 삭제 하시는경우 요청갯수와 기타 등등 메모리 리밋등등의 작업때문에 에러가 생길 수 있습니다..
  • Lv23 ? Lv7
    아..
    일괄적으로 삭제는 못하는건가보군요..
    알겠습니다.
  • ? Lv7 Lv23

    20개 선택해서 삭제하는것도 일괄 삭제죠뭐.

    다만 요청갯수가 너무 많아 일반적인 PHP웹환경에서 요청하는 POST요청진행시 PHP에서 실행을 못버티고 죽어버리는 겁니다. (성능상 서버가 죽는게 아니라 PHP에 설정한 한계치때문에 죽는겁니다.)

  • Lv23 ? Lv7
    그 한계치를 늘려도 문제가 없을까요?
  • ? Lv7 Lv23
    1. 굳이 그 작업을 위해 한계치를 늘릴만큼의 효용성이 있나요?
    2. 게시글을 굳이 2000개씩 삭제 하는 이유는요?
    3. 보통 그런삭제 작업이라면 Crontab 걸어두고, 특정 날자이전의 document를 늘 실행해서 한꺼번에 삭제 되지 않는 스크립트를 만들어서 작업하는게 더 낫습니다..
  • Lv23 ? Lv7
    용량이 부족해 오래된글을 지우려고하는데.. 전문적 지식이 없기에 이렇게 합니다..
  • ? Lv7 Lv23
    디비게시글 몇천개 끽해봐야.. 몇십 메가 정도일겁니다.

    대부분 썸네일의 용량이 차지하고 있지는 않는지 등등의 다른 요인들을 살펴보셔야죠.

    그래도 부족하면 용량 높은 플랜 혹은 가상서버 호스팅으로 이전 하시는거고요..ㅠㅠ

    이런식으로 하시는건 별로 사이트에 도움되지 않습니다.

    A라는 회원이 사이트 창립부터 활동해왓는데, 기존 게시글이 삭제되면서 그동안 모아뒀던 포인트들도 날라가는거고, 기존 게시글중에 검색엔진에 잘 걸린 게시글들이 사라져 유입에도 영향갈 수 있겟고요..
  • Lv23 ? Lv7
    유저들 대부분도 동의했고 유입은 신경쓰지 않고있어서..
    그냥 유저들이 자기들도 뻘글 싸지른거 삭제해도 상관없다해서 진행중이였습니다..

    고용량 파일들로 작업하는것도 나쁘지않겠네요.
  • Lv7
    따로 스크립트를 짜서 삭제하는 게 한참 효율적일거 같네요.
    DB야 document_srl 이 동일한거 다 삭제해 버리면 될거구요
    첨부파일은 따로 번호 규칙에 따라서 삭제해야겠네요
  • Lv36

    저번에 sql로 작업하지 말라는 답변을 받으신 이유가

    문서-댓글-댓글순서정보-첨부파일-포인트-카테고리정보-알림센터 등

    글 하나에 엮여 있는 데이터가 어마어마하게 많아서인데요...

     

    관리자 화면에서 삭제하는 것은 이렇게 연결된 데이터를 모두 찾아서 지우는만큼

    시간이 꽤 많이 소요됩니다. 한 번에 20~30개 이상은 무리예요.

    삭제해야 할 분량이 어마어마하게 많다면 한꺼번에 처리하는 스크립트를 만드시는 것이 이상적이겠지만

    그렇지 않다면 그냥 20~30개 선택하고 삭제하는 작업을 무한반복하는 편이 나을 것 같네요.

    돈을 아끼려면 사람이 좀 귀찮아지는 거죠 뭐... ㅠㅠ

     

    그런데 용량이 문제라면 첨부파일 용량이 큰 것들 위주로 (파일 모듈에서 크기순으로 정렬하여)

    100~200개만 골라서 삭제하시는 편이 훨씬 더 빠를 가능성이 높습니다.

  • Lv36 ? Lv7
    이해가 되도록 도움되는 답변 감사합니다.
    지금 그렇게 작업중입니다, 감사합니다!
  • Lv8
    귀찮아도 20개씩 지우는 노가다를 하는게 가장 좋긴하더군요
  • ? Lv8
    게시판 설정에서 목록수를 200개로 지정하면 200개씩 노출이 될겁니다.
    그럼 전체선택시 200개가 선택이 되지요. 그렇게 해서 한번에 200개씩 삭제를 하셔도 됩니다.
    물론 이렇게 하면 시간이 좀 걸리거나 삭제가 안되고 멈추는 경우가 있을순 있습니다만 제 경험상으로는 이렇게 해도 됐었습니다.
  • ? Lv8 ? Lv7
    그런식으로 하고있었지만

    일정 갯수만 삭제되고 에러가 뜨고 다시 눌러줘야 삭제를 하는 형식이길래요
    에러창이 안뜨는 방법을 알고싶었지만 그게 그렇게 하면 부담이 된다하니 천천히 하려고합니다
  • ? Lv10
    근데 php.ini 에서 설정한 시간제한을 코드상에서 풀 수 있지 않나요? 일반 멤버면 모르겠는데 관리자 모드일때는 그 시간 제한 좀 풀어줬으면 할때가 많기는 합니다.
  • ? Lv10 Lv36
    풀고 하면 되긴 합니다만...

    서드파티 자료에서 그거 풀어놓고 뻘짓하다가 아파치나 PHP-FPM에 설정된 프로세스 갯수 제한을 넘어가서 서버가 뻗어버리는 사고가 종종 발생하기 때문에, 제가 서버 세팅할 때는 시간제한 풀지 못하도록 막아버립니다.

    시간이 오래 걸릴 수 있는 작업을 웹에서 진행할 때는 20~30초 내에 처리할 수 있는 분량만큼 끊어서 하고, 처리가 끝나면 AJAX 요청으로 다음 부분을 처리하도록 하는 것이 가장 좋습니다. 휴면계정 정리 모듈에서 휴면안내 메일을 일괄 발송하거나 휴면계정을 일괄 삭제할 때 이 방법을 사용하는데요, 범용 모듈이기 때문에 기본값대로 타임아웃 걸린다고 가정하고 구현했습니다. 타임아웃을 마음대로 늘릴 수 있다고 가정하고 구현하는 것보다 훨씬 안전하지요.
  • Lv36 ? Lv7
    휴면계정 삭제 정말 잘쓰고있습니다.
    하지만 궁금한게 해당 모듈에 회원탈퇴가 된 회원들의 자료같은것도 지워주는건 없겠지요?

    아니면 탈퇴시 게시글 모두 삭제 애드온이랑 같이 사용하면 회원탈퇴 시킬때 자료도 같이 사라지는지 궁금하네용
  • ? Lv7 Lv36
    탈퇴가 아니라 강제삭제이기 때문에 애드온으로는 처리되지 않을 가능성이 높습니다.