Обновление MySQL проблема с большим количеством содержимого html

#php #mysql #html

#php #mysql #HTML

Вопрос:

Я создал автосохранение через Ajax для своей системы управления контентом. Возникла проблема. Проблема в том, что когда я тестирую на своем локальном сервере, php-сторона легко обновляет большой фрагмент данных, но когда я тестирую его на своем веб-хостинге, я вижу, что если обновленный контент представляет собой большие данные, то php не обновляет строку таблицы с первой попытки, обновляет только послевторая попытка. Есть предложения? Как справиться с этой проблемой?

Сторона PHP

 <?php
session_start();
require '../../core/includes/common.php';
$err=array();
$name=filter($_POST['name'],$db);
$id=$db->escape_string($_POST['id']);
$title=filter($_POST['title'], $db);
$parentcheck=$db->escape_string($_POST['parentcheck']);
if(isset ($_POST['parent'])) $parent=$db->escape_string($_POST['parent']);
else $parent=$parentcheck;  
$menu=$db->escape_string($_POST['menu']);
$content = html($_POST['content'], $db);
if (!isset($content)) die('error');

$result=$db->query("UPDATE pages AS p, menu AS m SET m.parent='$parent', m.name='$name', m.showinmenu='$menu', p.id='$id', p.title='$title', p.content='$content' WHERE m.id='$id' AND p.id=m.id") or die($db->error);


if ($result){   
echo "{";  
echo '"msg": "Success" ';
echo "}";  
}
else{ 
echo "{"; 
echo
'"err": "Error"';  
echo "}";  
}

?>
  

Комментарии:

1. насколько велики ваши данные ?! Я не думаю, что можно превысить ограничение по времени выполнения php с сохранением простой строки html. Возможно, ваш столбец базы данных на сервере слишком мал, и ошибка не отображается или что-то в этом роде … кроме того, нам могут понадобиться некоторые примеры кода 😉

2. Выдает ли ваш php какое-либо предупреждение или ошибку?

3. нет. я обновлю свой вопрос. проверьте, пожалуйста

4. он возвращает успех, и я отслеживаю все процессы с помощью firebug. Php не возвращает ошибку, но не обновляет таблицу БД. Странно. Я не могу найти неправильный код, логику. Он отлично работает на моем локальном сервере

Ответ №1:

Похоже, что в вашем коде может быть множество потенциальных ошибок, этот пример должен только показать, что вы можете сделать, чтобы всегда возвращать что-то обратно, что может быть в формате, с которым может работать ваш AJAX-запрос:

Вы смешиваете два типа обработки ошибок: сразу умираете и сообщаете о результате вашего действия AJAX. Вы должны делать так или иначе, этот отчет всегда возвращается:

 <?php
session_start();
require '../../core/includes/common.php';

...

if (!isset($content)) die('{"err": "No content"}'); // This will never happen BTW.

$result = $db->query("UPDATE pages AS p, menu AS m SET m.parent='$parent', m.name='$name', m.showinmenu='$menu', p.id='$id', p.title='$title', p.content='$content' WHERE m.id='$id' AND p.id=m.id");


if ($result)
{   
    echo '{"msg": "Success"'}';
}
else
{ 
    echo '{"err": "Error"}';
}

?>
  

Ответ №2:

Можете ли вы сделать что-то подобное, проанализировать содержимое html только для важного содержимого, то есть для div, а не для всей страницы, текстовый тип данных Mysql поддерживает 2 ГБ, но перегружать mysql небезопасно.

Идея 1 Можете ли вы случайно сохранить содержимое HTML в XML и передать ссылку вместе с узлом в столбце Mysql, чтобы AJAX получал xml и узел для отображения данных на лету.

Идея 2 Сжать содержимое и сохранить в Mysql