0

私は opencart ショッピング カートを初めて使用し、テスト サーバーに正常にインストールしましたが、管理パネルにサインインしようとすると、サインインに 40 ~ 50 分ほどかかります。

私はコードをデバッグし、ログイン要求ごとに、opencart が yahoo サーバーに curl 要求を送信して、次のメソッドが同じことを示している通貨値を取得することを知りました。

public function updateCurrencies($force = false) {
    if (extension_loaded('curl')) {
        $data = array();

        if ($force) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "'");
        } else {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "currency WHERE code != '" . $this->db->escape($this->config->get('config_currency')) . "' AND date_modified < '" .  $this->db->escape(date('Y-m-d H:i:s', strtotime('-1 day'))) . "'");
        }

        foreach ($query->rows as $result) {
            $data[] = $this->config->get('config_currency') . $result['code'] . '=X';
        }   

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_URL, 'http://download.finance.yahoo.com/d/quotes.csv?s=' . implode(',', $data) . '&f=sl1&e=.csv');
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        $content = curl_exec($curl);

        curl_close($curl);

        $lines = explode("\n", trim($content));

        foreach ($lines as $line) {
            $currency = utf8_substr($line, 4, 3);
            $value = utf8_substr($line, 11, 6);

            if ((float)$value) {
                $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '" . (float)$value . "', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($currency) . "'");
            }
        }

        $this->db->query("UPDATE " . DB_PREFIX . "currency SET value = '1.00000', date_modified = '" .  $this->db->escape(date('Y-m-d H:i:s')) . "' WHERE code = '" . $this->db->escape($this->config->get('config_currency')) . "'");

        $this->cache->delete('currency');
    }
}

opencart で通貨の更新を「いいえ」に設定してこの手順をスキップし、問題を解決しました。今では、バックエンドでサインインするのに 1 秒しかかかりません。

私の質問は、opencart で通貨を更新することが本当に必要ですか?

4

1 に答える 1

0

タイムアウト ステートメントがないために Yahoo サーバーに接続できない場合、問題が発生する可能性があります。

于 2015-09-17T10:13:06.127 に答える