За последние 24 часа нас посетили 8583 программиста и 439 роботов. Сейчас ищут 99 программистов ...

Ajax раз через раз ошибка 500/504

Тема в разделе "JavaScript и AJAX", создана пользователем NightWos, 11 мар 2017.

  1. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Добрый день друзья/товарищи. Весь интернет перерыл, ответа на свой вопрос не нашел. Прошу помощи... У меня ajax срабатывает раз через раз. Бывает и 10 обращений - моментальные, отличные, а бывает валится в 500/504 ошибку.
    Сразу error.log
    Код (Text):
    1. 2017/03/11 20:50:57 [error] 2310#2310: *11925 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 78.106.237.241, server: x-linkpay.com, request: "POST /actions/site_edit_banner.php HTTP/1.1", upstream: "https://5.187.5.231:8443/actions/site_edit_banner.php", host: "x-linkpay.com", referrer: "https://x-linkpay.com/cabinet/edit_banner/296"
    Сам ajax:
    Код (Javascript):
    1. $(function() {
    2.   $('#submit').click(function() {
    3.     var id = '<?php echo $getid; ?>';
    4.     var url = $('#url').val();
    5.     var ti = $('#ti').val();
    6.     var cost = $('#cost').val();
    7.     var cat = $('#cat').val();
    8.     var how = $('#how').val();
    9.     var bn_width = $('#bn_width').val();
    10.     var bn_height = $('#bn_height').val();
    11.     var bn_zagl = $('#bn_zagl').val();
    12.     $.ajax({
    13.       type: 'POST',
    14.       url: '/actions/site_edit_banner.php',
    15.       data: {
    16.         'id': id,
    17.         'url': url,
    18.         'ti': ti,
    19.         'cost': cost,
    20.         'cat': cat,
    21.         'how': how,
    22.         'bn_width': bn_width,
    23.         'bn_height': bn_height,
    24.         'bn_zagl': bn_zagl
    25.       },
    26.       cache: false,
    27.       success: function(result) {
    28.         if (result == '0') {
    29.           $().toastmessage('showErrorToast', "Не заполнены все необходимые поля");
    30.         }
    31.         if (result == '1') {
    32.           $().toastmessage('showSuccessToast', "Успешно");
    33.           $(location).attr('href', '/cabinet');
    34.         }
    35.         if (result == '2') {
    36.           $().toastmessage('showErrorToast', "Вы не авторизованы");
    37.         }
    38.         if (result == '3') {
    39.           $().toastmessage('showErrorToast', "Ошибка");
    40.         }
    41.         if (result == '4') {
    42.           $().toastmessage('showErrorToast', "Неверный адрес сайта");
    43.         }
    44.         if (result == '5') {
    45.           $().toastmessage('showErrorToast', "Этот сайт уже есть в системе");
    46.         }
    47.       }
    48.     });
    49.   });
    50. });
    php Обработчик:
    PHP:
    1. <?php
    2. include('../inc/conf.php');
    3. ini_set('session.use_cookies', 'On');
    4. ini_set('session.use_trans_sid', 'Off');
    5. session_set_cookie_params(604800000, "/", SITE, false, false);
    6. if (!isset($_SESSION["uid"]) || $_SESSION["uid"] != 301){
    7. echo "2";
    8. }
    9.  
    10. if(isset($_POST['id']) && isset($_POST['url']) && isset($_POST['ti']) && isset($_POST['cost']) && isset($_POST['cat']) && isset($_POST['how']) && isset($_POST['bn_width']) && isset($_POST['bn_height']) && isset($_POST['bn_zagl'])){
    11. if(!empty($_POST['id']) && !empty($_POST['url']) && !empty($_POST['ti']) && !empty($_POST['cost']) && !empty($_POST['cat']) && !empty($_POST['how']) && !empty($_POST['bn_width']) && !empty($_POST['bn_height']) && !empty($_POST['bn_zagl'])){
    12. $id = intval($_POST["id"]);
    13. $uid = intval($_SESSION["uid"]);
    14. $url = mysqli_real_escape_string($connect_db, $_POST["url"]);
    15. $ns = mysqli_fetch_assoc(mysqli_query($connect_db, "SELECT id,url,thumb FROM t_site WHERE id='$id'"));
    16. $url = mysqli_real_escape_string($connect_db, $_POST["url"]);
    17. $lr = stripos($url , "http");
    18. if ($lr === false) { echo '4'; exit; }
    19. $purln = parse_url($url);
    20. $eurln = $purln['host'];
    21. $purle = parse_url($ns['url']);
    22. $eurle = $purle['host'];
    23. $ti = mysqli_real_escape_string($connect_db, $_POST["ti"]);
    24. $cost = mysqli_real_escape_string($connect_db, $_POST["cost"]);
    25. $cat = intval($_POST["cat"]);
    26. $bn_width = mysqli_real_escape_string($connect_db, $_POST["bn_width"]);
    27. $bn_height = mysqli_real_escape_string($connect_db, $_POST["bn_height"]);
    28. $bn_zagl = mysqli_real_escape_string($connect_db, $_POST["bn_zagl"]);
    29. $how = intval($_POST["how"]);
    30. $dt = time();
    31. $file = "../thumbs/$dt.jpg";
    32. $scr = "$dt.jpg";
    33. $surl = "http://mini.s-shot.ru/1024x768/800/jpeg/?$url";
    34. $content = file_get_contents($surl);
    35. file_put_contents($file, $content);
    36. mysqli_query($connect_db, "UPDATE `t_site` SET `url` = '$url', `ti` = '$ti', `cat` = '$cat', `cost` = '$cost', `how` = '$how', `bn_width` = '$bn_width', `bn_height` = '$bn_height', `bn_zagl` = '$bn_zagl' WHERE id='$id' LIMIT 1");
    37. echo '1';
    38. } else { echo '0'; }
    39. } else { echo '3'; }
    40. ?>
    До кучи .htacces
    Код (Text):
    1. <files .htaccess>
    2. order allow,deny
    3. deny from all
    4. </files>
    5. Options +FollowSymLinks
    6. RewriteEngine On
    7. RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    8. RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    9. RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
    10. RewriteRule ^(.*)$ index.php [F,L]
    11. Options All -Indexes
    12. ServerSignature Off
    13. <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
    14. Header set Cache-Control "max-age=2592000"
    15. </FilesMatch>
    16. <ifModule mod_deflate.c>
    17. AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
    18. </ifModule>
    19. <IfModule mod_gzip.c>
    20. mod_gzip_on         Yes
    21. mod_gzip_dechunk    Yes
    22. mod_gzip_item_include file      \.(html?|txt|css|js|php|pl)$
    23. mod_gzip_item_include mime      ^text\.*
    24. mod_gzip_item_include mime      ^application/x-javascript.*
    25. mod_gzip_item_exclude mime      ^image\.*
    26. mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
    27. </IfModule>
    28. <ifModule mod_headers.c>
    29. <FilesMatch "\.(html|htm)$">
    30. Header set Cache-Control "max-age=43200"
    31. </FilesMatch>
    32. <FilesMatch "\.(js|css|txt)$">
    33. Header set Cache-Control "max-age=604800"
    34. </FilesMatch>
    35. <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
    36. Header set Cache-Control "max-age=2592000"
    37. </FilesMatch>
    38. <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
    39. Header unset Cache-Control
    40. </FilesMatch>
    41. </IfModule>
    42. <ifModule mod_expires.c>
    43. ExpiresActive On
    44. ExpiresDefault "access plus 5 seconds"
    45. ExpiresByType image/x-icon "access plus 2592000 seconds"
    46. ExpiresByType image/jpeg "access plus 2592000 seconds"
    47. ExpiresByType image/png "access plus 2592000 seconds"
    48. ExpiresByType image/gif "access plus 2592000 seconds"
    49. ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
    50. ExpiresByType text/css "access plus 604800 seconds"
    51. ExpiresByType text/javascript "access plus 604800 seconds"
    52. ExpiresByType application/javascript "access plus 604800 seconds"
    53. ExpiresByType application/x-javascript "access plus 604800 seconds"
    54. ExpiresByType text/html "access plus 43200 seconds"
    55. ExpiresByType application/xhtml+xml "access plus 600 seconds"
    56. </ifModule>
    57. RewriteEngine On
    58. RewriteBase /
    59. RewriteCond %{REQUEST_FILENAME} !-d
    60. RewriteCond %{REQUEST_FILENAME}\.php -f
    61. RewriteRule ^(.*)$ $1.php
    62. RewriteRule ^m_admin/user\/(.*?)$ m_admin/user.php?login=$1 [L,QSA]
    63. RewriteRule ^m_admin/ad_single\/(.*?)$ m_admin/ad_single.php?id=$1 [L,QSA]
    64. RewriteRule ^m_admin/edit\/(.*?)$ m_admin/edit.php?id=$1 [L,QSA]
    65. RewriteRule ^m_admin/view\/(.*?)$ m_admin/view.php?id=$1 [L,QSA]
    66. RewriteRule ^m_admin/moderation\/(.*?)$ m_admin/moderation.php?id=$1 [L,QSA]
    67. RewriteRule ^m_admin/sitestat\/(.*?)$ m_admin/sitestat.php?id=$1 [L,QSA]
    68. RewriteRule ^m_admin/adstat\/(.*?)$ m_admin/adstat.php?id=$1 [L,QSA]
    69. RewriteRule ^site\/(.*?)$ site.php?id=$1 [L,QSA]
    70. RewriteRule ^goto\/(.*?)$ goto.php?id=$1 [L,QSA]
    71. RewriteRule ^fromto\/(.*?)$ fromto.php?id=$1 [L,QSA]
    72. RewriteRule ^cabinet/site\/(.*?)$ cabinet/site.php?id=$1 [L,QSA]
    73. RewriteRule ^cabinet/sitestat\/(.*?)$ cabinet/sitestat.php?id=$1 [L,QSA]
    74. RewriteRule ^cabinet/adstat\/(.*?)$ cabinet/adstat.php?id=$1 [L,QSA]
    75. RewriteRule ^cabinet/edit_string\/(.*?)$ cabinet/edit_string.php?id=$1 [L,QSA]
    76. RewriteRule ^cabinet/edit_link\/(.*?)$ cabinet/edit_link.php?id=$1 [L,QSA]
    77. RewriteRule ^cabinet/edit_banner\/(.*?)$ cabinet/edit_banner.php?id=$1 [L,QSA]
    78. RewriteRule ^m_admin/edit_string\/(.*?)$ m_admin/edit_string.php?id=$1 [L,QSA]
    79. RewriteRule ^m_admin/edit_link\/(.*?)$ m_admin/edit_link.php?id=$1 [L,QSA]
    80. RewriteRule ^m_admin/edit_banner\/(.*?)$ m_admin/edit_banner.php?id=$1 [L,QSA]
    81. RewriteRule ^cabinet/ticket\/(.*?)$ cabinet/ticket.php?id=$1 [L,QSA]
    82. RewriteRule ^m_admin/ticket\/(.*?)$ m_admin/ticket.php?id=$1 [L,QSA]
    83. RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
    84. RewriteRule .* http://%1/$0 [L,R=301]
    Я прошу... нет, МОЛЮ! О помощи, голову себе всю изломал уже.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    Отваливается апстрим. Видимо, это пхп. Он молчит и ничего не отвечает. Это может быть в случае, если он входит в долгий цикл, который не закачивается дольше, чем веб-сервер готов ждать.
     
  3. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    А какое есть возможное решение этой проблемы ?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    Найти, где в коде затык. До куда обрабатывает, а дальше не идёт.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    а что делает скрипт, и зачем он куда-то в интернет лазиет? Может он оттуда долго ждёт ответа, поэтому висит.
     
  6. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    В интернет для создания скриншота/миниатюры сайта
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    надо проверить, сколько у него это занимает.
     
  8. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Дело в том что на др. хостинге скрипт работает отлично.
    Сейчас на VDS я с ТП общался, они говорили в htacces что-то не верно, а именно:
    Код (Text):
    1. RewriteCond %{REQUEST_FILENAME} !-d
    2. RewriteCond %{REQUEST_FILENAME}\.php -f
    3. RewriteRule ^(.*)$ $1.php
    Вроде какие то настройки на VDS сделали, проблема осталась актуальной, но воспроизводится намного реже.
    Так что возможно либо htacces, либо какие то настройки VDS ? Я именно в настройки под исполнение php скриптов в VDS вообще не разбираюсь...
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    я как со стеной говорю =)
    ты тупо игноришь то, чего не понимаешь, и ищешь там, где светлее, а не там, где ключи обронил.

    Ты должен замерить время выполнения разных кусков скрипта. Хоть через каждую строку натыйкай мерялку. Но ты долен знать какая часть скрипта тормозит. И вот только если не тормозит никакая - тогда можно идти ковырять конфиг апача...
     
  10. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Вот в этом я дуб-дубом. Написать переписать часть скрипта смогу. А вот мерить скорость, даже не представляю как ! :)
    Я вас понял, пошел "рыть инфу".
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    да хоть через time()
     
  12. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Не знаю как это взаимо связанно, но проблема решилась настройкой ответа сервера о том что кэшировать результаты не нужно:

    Код (Text):
    1.  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
    2. Header set Pragma "no-cache"
    3. Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
    Спасибо огромное за участие!
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    ты чтоли не сохранял превьюшку, а каждый раз дёргал тот сервис? при каждом выводе картинки?
     
  14. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Нет, превью сохраняется в папке, тут из кода видно:

    Код (Text):
    1. $file = "../thumbs/$dt.jpg";
    2. $scr = "$dt.jpg";
    3. $surl = "http://mini.s-shot.ru/1024x768/800/jpeg/?$url";
    4. $content = file_get_contents($surl);
    5. file_put_contents($file, $content);
    Тот сервис дергается при добавлении нового сайта, либо при редактировании.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    странно, короче.

    хорошо, что всё решилось, но странно.
     
  16. NightWos

    NightWos Новичок

    С нами с:
    11 мар 2017
    Сообщения:
    8
    Симпатии:
    0
    Да, тут все странно. Сам голову ломал. Но уверен 100% что в htacces собака зарыта )
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    я думаю, что htaccess не может давать 500 ошибку в такой ситуации =)
     
    denis01 нравится это.