php - MySQL 服务器已经消失 - Zend

标签 php mysql soap zend-framework

我有一个非常奇怪的问题。我正在开发基于 zend 框架的商店。我正在创建与一些拍卖服务(allegro.pl)的集成。我需要通过 SOAP 下载所有项目。在我的函数完成工作后,我得到“MySQL 服务器已经消失”。

这是我的代码:

private function getProducts()
    {
        $items = [];
        $filterOptions = /* doesn't matter for this question */;
        $allegroItems = $this->allegro->getCore()->doGetItemsList(0, 1, $filterOptions, 3, null);

        $itemsCount = $allegroItems->itemsCount;
        $perPage = 1000;
        $maxPage = ceil(round($itemsCount, 0) / $perPage);

        for ($i = 0; $i < $maxPage; $i++) {
            $allegroItems = $this->allegro->getCore()->doGetItemsList($perPage * $i, $perPage, $filterOptions, 3, null)->itemsList->item;

            if (!is_array($allegroItems)) {
                $allegroItems = [$allegroItems];
            }

            foreach ($allegroItems as $item) {
                $items[(string)$item->itemId] = $item;
            }
        }

        return $items;
    }

目前约有 3000 件商品。当我下载超过 2500-3000 个项目时出现错误(未计算确切数量)。我将 $perPage 设置为 1、100 或 1000 并不重要。它不依赖于执行时间 - 我可以设置 sleep(100) 并下载 1000 个产品,不会出现错误。就在该函数的最后一行之前,我可以毫无问题地调用任何数据库查询,但是当框架的内置函数尝试更新任务表时,我会收到错误。

错误似乎不依赖于任何东西...不是执行时间(时间约为 30 秒,并且在 sleep(100) 下工作正常),而不是内存限制(我可以取消设置每个循环的变量或将内存限制设置为 1GB,没有没有帮助),而不是 SOAP 功能的执行时间(逐一下载 2000 个项目效果很好,尽管需要几分钟)。对我来说最奇怪的是 - 数据库查询正在该函数内部工作,就在我所说的最后一行之前。

我没有使用清晰的 zend 框架,而是使用基于 zend 的“shoper”。

有什么想法吗?

最佳答案

问题出在 BLOB 数据上。增加 max_allowed_pa​​cket 解决了这个问题。但是我不知道 BLOB 中有什么以及我的函数如何影响它,因为我将它编写为完全独立的函数:-)

关于php - MySQL 服务器已经消失 - Zend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391793/

相关文章:

php - PHP邮件功能无法完成电子邮件的发送

wcf - 在 SAP 中生成 WSDL Web 服务对象

java - 解析的 SOAP 响应与收到的响应不同

php - 如何在 PHP 5.5 中使用 password_needs_rehash 函数

PHP CURL GET 请求返回 500,其中 bash curl 成功

php - 在 PHP 中以用户身份执行 Linux 命令

php - 我可以安全地使用带有 utf8 列的 utf8mb4 连接吗?

php - 在 MySQL 插入上使用 multipart/form-data 的奇怪行为

PHP登录表单错误未定义索引: active

iphone - Xcode 发送 HTTPS Soap 请求