Добрый день друзья/товарищи. Весь интернет перерыл, ответа на свой вопрос не нашел. Прошу помощи... У меня ajax срабатывает раз через раз. Бывает и 10 обращений - моментальные, отличные, а бывает валится в 500/504 ошибку. Сразу error.log Код (Text): 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): $(function() { $('#submit').click(function() { var id = '<?php echo $getid; ?>'; var url = $('#url').val(); var ti = $('#ti').val(); var cost = $('#cost').val(); var cat = $('#cat').val(); var how = $('#how').val(); var bn_width = $('#bn_width').val(); var bn_height = $('#bn_height').val(); var bn_zagl = $('#bn_zagl').val(); $.ajax({ type: 'POST', url: '/actions/site_edit_banner.php', data: { 'id': id, 'url': url, 'ti': ti, 'cost': cost, 'cat': cat, 'how': how, 'bn_width': bn_width, 'bn_height': bn_height, 'bn_zagl': bn_zagl }, cache: false, success: function(result) { if (result == '0') { $().toastmessage('showErrorToast', "Не заполнены все необходимые поля"); } if (result == '1') { $().toastmessage('showSuccessToast', "Успешно"); $(location).attr('href', '/cabinet'); } if (result == '2') { $().toastmessage('showErrorToast', "Вы не авторизованы"); } if (result == '3') { $().toastmessage('showErrorToast', "Ошибка"); } if (result == '4') { $().toastmessage('showErrorToast', "Неверный адрес сайта"); } if (result == '5') { $().toastmessage('showErrorToast', "Этот сайт уже есть в системе"); } } }); }); }); php Обработчик: PHP: <?php include('../inc/conf.php'); ini_set('session.use_cookies', 'On'); ini_set('session.use_trans_sid', 'Off'); session_set_cookie_params(604800000, "/", SITE, false, false); session_start(); if (!isset($_SESSION["uid"]) || $_SESSION["uid"] != 301){ echo "2"; exit; } 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'])){ 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'])){ $id = intval($_POST["id"]); $uid = intval($_SESSION["uid"]); $url = mysqli_real_escape_string($connect_db, $_POST["url"]); $ns = mysqli_fetch_assoc(mysqli_query($connect_db, "SELECT id,url,thumb FROM t_site WHERE id='$id'")); $url = mysqli_real_escape_string($connect_db, $_POST["url"]); $lr = stripos($url , "http"); if ($lr === false) { echo '4'; exit; } $purln = parse_url($url); $eurln = $purln['host']; $purle = parse_url($ns['url']); $eurle = $purle['host']; $ti = mysqli_real_escape_string($connect_db, $_POST["ti"]); $cost = mysqli_real_escape_string($connect_db, $_POST["cost"]); $cat = intval($_POST["cat"]); $bn_width = mysqli_real_escape_string($connect_db, $_POST["bn_width"]); $bn_height = mysqli_real_escape_string($connect_db, $_POST["bn_height"]); $bn_zagl = mysqli_real_escape_string($connect_db, $_POST["bn_zagl"]); $how = intval($_POST["how"]); $dt = time(); $file = "../thumbs/$dt.jpg"; $scr = "$dt.jpg"; $surl = "http://mini.s-shot.ru/1024x768/800/jpeg/?$url"; $content = file_get_contents($surl); file_put_contents($file, $content); 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"); echo '1'; } else { echo '0'; } } else { echo '3'; } ?> До кучи .htacces Код (Text): <files .htaccess> order allow,deny deny from all </files> Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L] Options All -Indexes ServerSignature Off <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <ifModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript </ifModule> <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^text\.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image\.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> <ifModule mod_headers.c> <FilesMatch "\.(html|htm)$"> Header set Cache-Control "max-age=43200" </FilesMatch> <FilesMatch "\.(js|css|txt)$"> Header set Cache-Control "max-age=604800" </FilesMatch> <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$"> Header unset Cache-Control </FilesMatch> </IfModule> <ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 5 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 604800 seconds" ExpiresByType application/javascript "access plus 604800 seconds" ExpiresByType application/x-javascript "access plus 604800 seconds" ExpiresByType text/html "access plus 43200 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds" </ifModule> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteRule ^m_admin/user\/(.*?)$ m_admin/user.php?login=$1 [L,QSA] RewriteRule ^m_admin/ad_single\/(.*?)$ m_admin/ad_single.php?id=$1 [L,QSA] RewriteRule ^m_admin/edit\/(.*?)$ m_admin/edit.php?id=$1 [L,QSA] RewriteRule ^m_admin/view\/(.*?)$ m_admin/view.php?id=$1 [L,QSA] RewriteRule ^m_admin/moderation\/(.*?)$ m_admin/moderation.php?id=$1 [L,QSA] RewriteRule ^m_admin/sitestat\/(.*?)$ m_admin/sitestat.php?id=$1 [L,QSA] RewriteRule ^m_admin/adstat\/(.*?)$ m_admin/adstat.php?id=$1 [L,QSA] RewriteRule ^site\/(.*?)$ site.php?id=$1 [L,QSA] RewriteRule ^goto\/(.*?)$ goto.php?id=$1 [L,QSA] RewriteRule ^fromto\/(.*?)$ fromto.php?id=$1 [L,QSA] RewriteRule ^cabinet/site\/(.*?)$ cabinet/site.php?id=$1 [L,QSA] RewriteRule ^cabinet/sitestat\/(.*?)$ cabinet/sitestat.php?id=$1 [L,QSA] RewriteRule ^cabinet/adstat\/(.*?)$ cabinet/adstat.php?id=$1 [L,QSA] RewriteRule ^cabinet/edit_string\/(.*?)$ cabinet/edit_string.php?id=$1 [L,QSA] RewriteRule ^cabinet/edit_link\/(.*?)$ cabinet/edit_link.php?id=$1 [L,QSA] RewriteRule ^cabinet/edit_banner\/(.*?)$ cabinet/edit_banner.php?id=$1 [L,QSA] RewriteRule ^m_admin/edit_string\/(.*?)$ m_admin/edit_string.php?id=$1 [L,QSA] RewriteRule ^m_admin/edit_link\/(.*?)$ m_admin/edit_link.php?id=$1 [L,QSA] RewriteRule ^m_admin/edit_banner\/(.*?)$ m_admin/edit_banner.php?id=$1 [L,QSA] RewriteRule ^cabinet/ticket\/(.*?)$ cabinet/ticket.php?id=$1 [L,QSA] RewriteRule ^m_admin/ticket\/(.*?)$ m_admin/ticket.php?id=$1 [L,QSA] RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] RewriteRule .* http://%1/$0 [L,R=301] Я прошу... нет, МОЛЮ! О помощи, голову себе всю изломал уже.
Отваливается апстрим. Видимо, это пхп. Он молчит и ничего не отвечает. Это может быть в случае, если он входит в долгий цикл, который не закачивается дольше, чем веб-сервер готов ждать.
а что делает скрипт, и зачем он куда-то в интернет лазиет? Может он оттуда долго ждёт ответа, поэтому висит.
Дело в том что на др. хостинге скрипт работает отлично. Сейчас на VDS я с ТП общался, они говорили в htacces что-то не верно, а именно: Код (Text): RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php Вроде какие то настройки на VDS сделали, проблема осталась актуальной, но воспроизводится намного реже. Так что возможно либо htacces, либо какие то настройки VDS ? Я именно в настройки под исполнение php скриптов в VDS вообще не разбираюсь...
я как со стеной говорю =) ты тупо игноришь то, чего не понимаешь, и ищешь там, где светлее, а не там, где ключи обронил. Ты должен замерить время выполнения разных кусков скрипта. Хоть через каждую строку натыйкай мерялку. Но ты долен знать какая часть скрипта тормозит. И вот только если не тормозит никакая - тогда можно идти ковырять конфиг апача...
Вот в этом я дуб-дубом. Написать переписать часть скрипта смогу. А вот мерить скорость, даже не представляю как ! Я вас понял, пошел "рыть инфу".
Не знаю как это взаимо связанно, но проблема решилась настройкой ответа сервера о том что кэшировать результаты не нужно: Код (Text): Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" Header set Pragma "no-cache" Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" Спасибо огромное за участие!
Нет, превью сохраняется в папке, тут из кода видно: Код (Text): $file = "../thumbs/$dt.jpg"; $scr = "$dt.jpg"; $surl = "http://mini.s-shot.ru/1024x768/800/jpeg/?$url"; $content = file_get_contents($surl); file_put_contents($file, $content); Тот сервис дергается при добавлении нового сайта, либо при редактировании.