Проблема с PHP / MySQL сервером - PullRequest
1 голос
/ 22 марта 2011

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

У меня есть клиент, который размещен в компании, которая сейчас обвиняет веб-сайт, который я создал для клиента, в «сбое» (илипо крайней мере, чтобы он работал очень медленно) сервер снова и снова.И нет, это не огромный сайт с любым сложным сценарием.Это блог с функциями комментариев.

Они говорят мне, что это проблема, потому что из журналов, кажется, есть только одна проблема:

www.xxxxxx.se xxx.xxx.xx.xxx [14 / Mar / 2011: 05: 08: 02 +0100] fcgi_php_error: PHP Предупреждение: mysql_query () [function.mysql-query]: невозможно сохранить набор результатов в / home / t / xxxxx / www/include/php/newsfeed_full.php в строке 66, PHP Предупреждение: mysql_fetch_assoc (): предоставленный аргумент не является допустимым ресурсом результатов MySQL в /home/t/xxxxx/www/include/php/newsfeed_full.php в строке 68

Строка 66:

$sql = "INSERT INTO `newsfeed_comments` (post_id, reply_id, date, name, text) VALUES ('".mysql_real_escape_string($post_id)."', '".mysql_real_escape_string($_POST['reply_id'])."', '".date('YmdHis')."', '".mysql_real_escape_string($_POST['name'])."', '".mysql_real_escape_string($_POST['text'])."')";
mysql_query($sql) or die(mysql_error());

$ sql вывод:

INSERT INTO `newsfeed_comments` (post_id, reply_id, date, name, text) VALUES ('168', '111194', '20110322145339', 'Test 2', 'Test text 2')

Строка 68:

$sql = "SELECT * FROM `newsfeed_comments` WHERE `post_id` = '".$post_id."' && `reply_id` IS NULL ORDER BY `date` DESC";
$result = mysql_query($sql);
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
//and so on...

$ sql вывод:

SELECT * FROM `newsfeed_comments` WHERE `post_id` = '168' && `reply_id` IS NULL ORDER BY `date` DESC

Проблема в том, что я никогда не видел этих ошибок сам из тестирования.Я никогда не был в состоянии повторить ошибки, в любом случае.Так что это, очевидно, работает.

Мой вопрос: что может быть не так?Хостинговая компания просто говорит мне, что мне нужно убедиться, что мой скрипт может обрабатывать все возможные ошибки, которые может выдать их сервер.

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

Я что-то упустил?У меня большой пробел в знании PHP?

Ответы [ 4 ]

1 голос
/ 22 марта 2011

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

1 голос
/ 22 марта 2011

Возможно, на его машине включены ПРЕДУПРЕЖДЕНИЯ, это не ошибки, php сообщает вам несколько предупреждений.Смотри http://php.net/manual/en/function.error-reporting.php

0 голосов
/ 22 марта 2011

Вы можете обработать ошибку и выполнить некоторую отладку, заключив цикл while в оператор if ($ result). Проверьте использование памяти вашего скрипта с помощью memory_get_usage () и ограничение памяти с помощью ini_get('memory_limit');

$sql = "SELECT * FROM `newsfeed_comments` WHERE `post_id` = '".$post_id."' && `reply_id` IS NULL ORDER BY `date` DESC";
echo "Memory limit: " . ini_get('memory_limit');
echo memory_get_usage();
$result = mysql_query($sql);
echo memory_get_usage();
if ($result) {
  $i = 0;
  while ($row = mysql_fetch_assoc($result)) {
    ...
  }
}
0 голосов
/ 22 марта 2011

Эта ошибка встречается часто, когда таблица повреждена. Вы должны попытаться "восстановить" таблицу, используя phpMyAdmin на вкладке "Операции", или я считаю, что вы можете выполнить запрос типа "восстановить таблицу newsfeed_comments".

или

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

$sql = "SELECT * FROM `newsfeed_comments` WHERE `post_id` = '".$post_id."' && `reply_id` IS NULL ORDER BY `date` DESC";
$result = mysql_query($sql) or error_log(mysql_error());
...