>  기사  >  백엔드 개발  >  php_php에 대량의 데이터를 게시할 때 데이터 손실 문제 해결 팁

php_php에 대량의 데이터를 게시할 때 데이터 손실 문제 해결 팁

WBOY
WBOY원래의
2016-05-16 20:12:591234검색

해결책:

php.ini에서 max_input_vars를 늘리고 5000으로 변경하세요

원인 추적:

enctype="multipart/form-data"에서

php 버전 5.6.6

문제: 일부 POST 데이터를 수신할 수 없습니다

소스코드를 추적해 본 결과 php의 max_input_vars 구성으로 인해 발생한 것으로 확인되었습니다.

해당 함수는 rfc1867_post_handler입니다. 길이를 초과하면 변수 등록을 위해 safe_php_register_variable이 호출되지 않습니다

해당 스택은 다음과 같습니다

코드 복사 코드는 다음과 같습니다.

#0 rfc1867_post_handler(
content_type_dup=0x7ff85307a5f8 "multipart/form-data; 경계=", '-' , "306141311912057",
arg=0x7ff85307ccc0) /tmp/php-5.6.2/main/rfc1867.c:681
/tmp/php-5.6.2/main/SAPI.c:185
에 있는 sapi_handle_post의 #1 0x00000000007a4bb0(인수=<값 최적화됨>) #2 php_default_treat_data의 0x00000000007ab72f(arg=0, str=0x0, destArray=0x7ff85307ccc0)
/tmp/php-5.6.2/main/php_variables.c:399
에서 #3 mbstr_treat_data(arg=0, str=0x0, destArray=0x0)의 0x0000000000615c91, /tmp/php-5.6.2/ext/mbstring/mb_gpc.c:69
#4 php_auto_globals_create_post의 0x00000000007aa9fb(이름=0x7ff852f474f0 "_POST", name_len=5)
/tmp/php-5.6.2/main/php_variables.c:741
에서 #5 0x00000000007d63bb in zend_auto_global_init(auto_global=0x196c950) at /tmp/php-5.6.2/Zend/zend_compile.c:6832
#6 0x0000000000808a43 in zend_hash_apply(ht=0x1955cb0, apply_func=0x7d63a0 )
/tmp/php-5.6.2/Zend/zend_hash.c:641
#7 0x00000000007aaa4e in php_hash_environment () at /tmp/php-5.6.2/main/php_variables.c:702
/tmp/php-5.6.2/main/main.c:1671에 있는 php_request_startup()의 #8 0x000000000079bb25
메인의 #9 0x00000000008a756d (argc=<값 최적화됨>, argv=<값 최적화됨>)
/tmp/php-5.6.2/sapi/fpm/fpm/fpm_main.c:1887

여기서 rfc1867_post_handler는 php_session_rfc1867_callback입니다

끝~

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