Intereting Posts
Создать RESTful API в PHP? Уникальное ограничение электронной почты для проверки подлинности Laravel 4 Бесплатные удаленные серверы smtp? Как заполнить массив внутри цикла while и получить новую область для каждой итерации? Codeigniter Active Record – количество найденных строк с ограничением (MySQL) отправка дополнительных значений в PHP-скрипт с использованием загрузки углового файла Получить значения раскрывающегося списка на основе первого раскрывающегося списка Попытка сделать класс под названием «Список», но функция list () разбивает его Как установить эти расширения PHP на Ubuntu? Эквивалент PHP для партитур / коллекций шаблонов RoR Доменный дизайн с Zend Определить ориентацию видео iPhone с сервера Не удается получить доступ к файлам php, скопированным в / var / www / или другие папки Разрешенный размер памяти 134217728 байт, израсходованный в PhpExcel Не удается получить доступ к Facebook signed_request с вкладкой iframe

ПРЕДУПРЕЖДЕНИЕ: предварительный заголовок показан

Я не могу отладить это сообщение, которое появилось как неделю назад.

Я попытался восстановить старые файлы, но это странно, ничто не решает мою проблему.

Итак: у меня есть два длинных запроса на опрос. (отключение одного из них не помогает).

например, это один из них:

public function update_private_messages_ajax_handler(){ global $wpdb; global $bp; $chat_table = $wpdb->prefix . 'bp_dollars_chat'; $current_user = $bp->loggedin_user->id; ob_start(); header("Content-Type: application/json"); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); $startTime = time(); while((time()-$startTime)<=20) { $messages = $wpdb->get_results( $wpdb->prepare("(SELECT * FROM $chat_table WHERE to_user = %d AND recd = 1 AND id > %d ORDER BY id DESC) ORDER BY id ASC ", $current_user, $_POST['last_id']) ); if($messages) { foreach($messages as $v){ //$v->timestring = date_i18n($this->date_format.' - '.$this->time_format, $v->unix_timestamp+$this->gmt_offset); $v->name = get_dollar_name($v->from_user); $v->avatar = get_avatar($v->from_user, 50); //$v->message = convert_smilies( $v->message ); } $response = json_encode(array('no_participation' => $this->no_participation, 'success'=> 1, 'messages'=>$messages)); echo $response; ob_flush(); flush(); exit; } else { sleep($this->options['timeout_refresh_messages']); } } $response = json_encode(array('no_participation' => $this->no_participation, 'success'=> 0)); echo $response; ob_flush(); flush(); exit; } 

Как вы можете видеть, я отправил заголовки кеш-контроля, так что это не должно быть проблемой, описанной здесь. У меня также нет установленного adBlocker, и это локальная установка.

есть клиентский скрипт

 update_private_messages: function() { jQuery.post(quick_chat.ajaxurl, { action: 'quick-chat-ajax-update-pmessages', last_id: quick_chat.last_private_id }, function(data) { console.log(data); if(data.success == 1) { var updates = data.messages; var already_notified = 0; var chat_history = jQuery('.popoverx.chat.in .chathistory'); for(var i=0;typeof(updates[i])!='undefined';i++){ // this in case if window open and new message is for current user if(quick_chat.privateOpen == true && (quick_chat.privateOhter == updates[i].from_user || quick_chat.privateOhter == updates[i].to_user )) { // @TODO do I animate every time? jQuery(chat_history).prepend(quick_chat.single_private_html(updates[i])).animate({scrollTop: 0}, 500); } else if(updates[i].recd == 1 && updates[i].from_user != quick_chat.user_id) { // not yet in unread group if(quick_chat.privateUnread.indexOf(parseInt(updates[i].from_user)) == -1) { quick_chat.privateUnread.push(parseInt(updates[i].from_user)); } if(already_notified == 0 && quick_chat.last_private_id != 0 && updates[i].from_user != quick_chat.user_id) { if(quick_chat.play_audio == 1) { quick_chat.audio_element.play(); } already_notified = 1; } } } // update label var unreadIcon = jQuery('#bs-navbar-right > li > a.messages'); if(quick_chat.privateUnread.length != 0) { unreadIcon.find('span').remove().end().append('<span class="label label-danger">'+ quick_chat.privateUnread.length +'</span>') } else { unreadIcon.find('span').remove() } quick_chat.last_private_id = updates[updates.length-1].id; } quick_chat.update_private_messages(); }, 'json' ); } 

Это нормально? Я не могу быть нормальным сообщением для длительных опросов – с его ожидающего запроса. Его просто не документируют нигде


Примечание: также у меня много запросов на короткий запрос, и это может быть случай, когда более 6 запросов отменяют друг друга, но … я также пытался отключить все остальные запросы, кроме одного (длинный опрос), и это не случай


Вот оригинальный скрипт, который позволяет вам увидеть сообщение: http://www.techytalk.info/wordpress/quick-chat/


Просто чтобы ответить на этот вопрос: это нормально? (Я не вижу эту проблему на других сайтах, где используется комета), а если нет – где искать проблему, клиентскую или серверную? Здесь они говорят, что в таком случае запрос вообще не отправляется, но это не так, мои скрипты работают, и я не могу общаться (это скрипт чата)

Это абсолютно нормально в хроме (на данный момент). Здесь обсуждалась дискуссия об изменениях, по существу, в ожидании запросов, что они отображали определенные заголовки неправильно, поэтому теперь они показывают предупреждение, что это временные заголовки.

Из обсуждения:

Панель сети: добавьте осторожность в предварительные заголовки запросов. (было: в инструментах разработчика неверны заголовки запросов для ожидающих запросов)

Я не знаю, когда исправление действительно было выпущено, или если вы оставите Chrome открытым все время, и поэтому он не обновлялся какое-то время – но почти наверняка это ничего не вы сделали – как работает Chrome сейчас.

Эта проблема также может появиться, если вы забудете сделать заголовки CORS при вызове перекрестного домена.

  header("Access-Control-Allow-Origin: *"); 

В моем случае это потому, что запросы возвращают несколько результатов, которые переписывают переменную сеанса в корневом кодеригенере. Это запрос AJAX от jQuery.

Был решен удалены все повторные результаты.

Вашей проблемой может быть заголовок (), следующий за функцией ob_start (). Попробуйте поместить заголовок () перед запуском буфера следующим образом:

 header("Content-Type: application/json"); header("Cache-Control: no-cache, must-revalidate"); header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); ob_start();