12

私は Magento サイトで作業していますが、次のエラーが発生します。

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away on running 
cron job magento

このエラーは時々しか発生しません。

<?php
class Namespace_Module_Model_Observer 
{
  public function importemails(Varien_Event_Observer $observer)
  {
    echo "Hi Dear";exit();

    /* connect to gmail */
    $hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
    $username = 'myid@gmail.com';
    $password = 'mypass';

    /* try to connect */
    $inbox = imap_open($hostname,$username,$password) 
        or die('Cannot connect to Gmail: ' . imap_last_error());

    /* grab emails */
    $emails = imap_search($inbox,'ALL');

    /* if emails are returned, cycle through each... */
    if($emails) {

      /* begin output var */
      $output = '';

      /* put the newest emails on top */
      rsort($emails);

      /* for every email... */
      foreach($emails as $email_number) {

        /* get information specific to this email */
        $overview = imap_fetch_overview($inbox,$email_number,0);
        $message = imap_fetchbody($inbox,$email_number,2);

        /* output the email header information */
        $output.= 
          '<div class="toggler '.($overview[0]->seen ? 'read' : 'unread').'">';
        $output.= '<span class="subject">'.$overview[0]->subject.'</span> ';
        $output.= '<span class="from">'.$overview[0]->from.'</span>';
        $output.= '<span class="date">on '.$overview[0]->date.'</span>';
        $output.= '</div>';

        /* output the email body */
        $output.= '<div class="body">'.$message.'</div>';
      }
      echo $output;
    } 

    /* close the connection */
    imap_close($inbox);
  }  
}

このコードは数時間機能し、その後このエラーが発生します。エラーの意味は何ですか?

4

6 に答える 6

0

Magento DB で 20 秒以上動作しないアクションがある場合 (wait_timeout=20 で共有ホスティングに遭遇しました)、DB 接続を閉じる必要があります。Magento は、DB への次の呼び出しで新しい接続を作成します。

    Mage::getSingleton('core/resource')->getConnection('read')->closeConnection();
于 2016-02-14T14:32:35.383 に答える
0

phpsh インタープリターでこのエラーが発生した場合。 このエラーは、phpsh と doctrine manager への新しいシェルで再現できます。

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away 

phpsh インタープリターで次のコマンドを使用します。

php> $result = $conn->query('select psetid from psetproblems')->fetchAll();

説明:

このエラーは MySQL タイムアウト エラーです。接続を作成してから実際に使用するまでに時間がかかりすぎたか、コマンドの 1 つでエラーが発生し、接続が台無しになりました。最も簡単な解決策は、すべてを停止して再起動し、エラーをスローするコマンドを実行せず、すぐに実行することです。それはうまくいくはずです。

解決

インタープリターを再起動します。エラーを送信せず、インタープリターを介してコマンドを発行する際に高速化します。

PHP の MySQL 接続のタイムアウトの長さを増やすことができます。その後、接続を作成してから使用するまで、より長く待つことができます。

于 2014-02-14T20:31:58.240 に答える
0

タイムアウトの問題はありません。

fclose(STDERR) 行をメイン ファイルからインクルード ファイルに移動したところ、この問題が発生し始めました。

SQLSTATE[HY000]: 一般エラー: 2006 MySQL サーバーがなくなりました

ラインを元の場所に戻し、問題はなくなりました。

基本的に、インクルードされたファイルから STDERR を閉じると、おかしな影響があるようです。

于 2014-04-06T00:10:42.133 に答える
0

共有ホスティングを使用する場合は、インデックス テーブルのサイズを調べることもできます。そのため、多くのスペースが必要になる場合があり、「mysql サーバーがなくなった」というメッセージが表示される場合もあります。

于 2014-08-14T09:05:16.990 に答える
0

以前にこのエラーに遭遇したことがあります。私の場合、データベースのサイズが大きすぎて、5 年間のデータで 18 GB を超えていたことが原因でした。

私にとって有効な唯一の解決策は、これらすべてのデータをダンプして新しいデータベースを作成することでした。

于 2015-06-30T04:08:43.613 に答える