Meilisearch-laravel-scout: معلمات خاطئة لـ MeiliSearch \ استثناءات \ HTTPRequestException

تم إنشاؤها على ١٠ أغسطس ٢٠٢٠  ·  14تعليقات  ·  مصدر: meilisearch/meilisearch-laravel-scout

بدأت في الحصول على هذا الاستثناء بعد الترقية إلى أحدث إصدار أمس من هذه الحزمة.

تتبع المكدس:

[2020-08-10 15:22:11] production.ERROR: Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) {"exception":"[object] (Error(code: 0): Wrong parameters for MeiliSearch\\Exceptions\\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) at /home/redacted/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php:20)
[stacktrace]
#0 /home/redacted/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php(20): Exception->__construct()
#1 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(182): MeiliSearch\\Exceptions\\HTTPRequestException->__construct()
#2 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(165): MeiliSearch\\Http\\Client->parseResponse()
#3 /home/redacted/vendor/meilisearch/meilisearch-php/src/Http/Client.php(101): MeiliSearch\\Http\\Client->execute()
#4 /home/redacted/vendor/meilisearch/meilisearch-php/src/Endpoints/Delegates/HandlesDocuments.php(29): MeiliSearch\\Http\\Client->post()
#5 /home/redacted/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(59): MeiliSearch\\Endpoints\\Indexes->addDocuments()
#6 /home/redacted/vendor/laravel/scout/src/Jobs/MakeSearchable.php(42): Meilisearch\\Scout\\Engines\\MeilisearchEngine->update()
#7 [internal function]: Laravel\\Scout\\Jobs\\MakeSearchable->handle()
Laravel integration

ال 14 كومينتر

نفس المشكلة هنا ، بعد تحديث هذه الحزمة ، كنت بحاجة إلى تحديث مثال الرمز هذا المأخوذ من الملف التمهيدي كما هو موضح أدناه =>

Book::search('prince', function (Index $meilisearch, $query, $options) {
    $options['filters'] = 'author="Antoine de Saint-Exupéry"';

    return $meilisearch->search($query, $options);
})->take(3)->get();

إلى

Book::search('prince', function (Indexes $meilisearch, $query, $options) {
    $options['filters'] = 'author="Antoine de Saint-Exupéry"';

    return $meilisearch->search($query, $options);
})->take(3)->get();

راجع المعلمة $meilisearch ، تم كتابة تلميح إلى Meilisearch\Index قبل ، لكننا الآن نحتاج إلى كتابة تلميح إلى MeiliSearch\Endpoints\Indexes .

ثم لدي هذه المشكلة:

[2020-08-11 15:56:50] local.ERROR: Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) {"userId":2,"exception":"[object] (Error(code: 0): Wrong parameters for MeiliSearch\\Exceptions\\HTTPRequestException([string $message [, long $code [, Throwable $previous = NULL]]]) at /var/www/html/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php:20)
[stacktrace]
#0 /var/www/html/vendor/meilisearch/meilisearch-php/src/Exceptions/HTTPRequestException.php(20): Exception->__construct(NULL, 405, NULL)
#1 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(182): MeiliSearch\\Exceptions\\HTTPRequestException->__construct(405, NULL)
#2 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(165): MeiliSearch\\Http\\Client->parseResponse(Object(GuzzleHttp\\Psr7\\Response))
#3 /var/www/html/vendor/meilisearch/meilisearch-php/src/Http/Client.php(101): MeiliSearch\\Http\\Client->execute(Object(GuzzleHttp\\Psr7\\Request))
#4 /var/www/html/vendor/meilisearch/meilisearch-php/src/Endpoints/Indexes.php(127): MeiliSearch\\Http\\Client->post('/indexes/compan...', Array)
#5 /var/www/html/app/Models/Company.php(394): MeiliSearch\\Endpoints\\Indexes->search('oj', Array)
#6 [internal function]: App\\Models\\Company::App\\Models\\{closure}(Object(MeiliSearch\\Endpoints\\Indexes), 'oj', Array)
#7 /var/www/html/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(128): call_user_func(Object(Closure), Object(MeiliSearch\\Endpoints\\Indexes), 'oj', Array)
#8 /var/www/html/vendor/meilisearch/meilisearch-laravel-scout/src/Engines/MeilisearchEngine.php(92): Meilisearch\\Scout\\Engines\\MeilisearchEngine->performSearch(Object(Laravel\\Scout\\Builder), Array)
#9 /var/www/html/vendor/laravel/scout/src/Builder.php(220): Meilisearch\\Scout\\Engines\\MeilisearchEngine->search(Object(Laravel\\Scout\\Builder))
#10 /var/www/html/app/Models/Company.php(396): Laravel\\Scout\\Builder->raw()
#11 /var/www/html/app/Http/Livewire/Admin/ShowCompanies.php(171): App\\Models\\Company::searchBy('oj', Array)
#12 /var/www/html/vendor/livewire/livewire/src/Component.php(99): App\\Http\\Livewire\\Admin\\ShowCompanies->render()
#13 /var/www/html/vendor/livewire/livewire/src/Connection/ConnectionHandler.php(29): Livewire\\Component->output(NULL)
#14 /var/www/html/vendor/livewire/livewire/src/Controllers/HttpConnectionHandler.php(13): Livewire\\Connection\\ConnectionHandler->handle(Array)
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(48): Livewire\\Controllers\\HttpConnectionHandler->__invoke('admin.show-comp...')
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(239): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Livewire\\Controllers\\HttpConnectionHandler), '__invoke')
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(196): Illuminate\\Routing\\Route->runController()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(685): Illuminate\\Routing\\Route->run()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(77): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(62): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(687): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#36 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(628): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(617): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#40 /var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(65): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(63): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/www/html/vendor/fruitcake/laravel-cors/src/HandleCors.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#48 /var/www/html/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(140): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(109): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#53 /var/www/html/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#54 {main}
"} 

مرحبا يا شباب!

عذرًا ، كان يجب أن يكون الإصدار السابق قاصرًا جديدًا ( v0.11.0 بدلاً من v0.10.7 ). لم ندرك أنه كان ينكسر! اسف بشأن ذلك!

YannickYayo ، شكرا على الإصلاح! هذا PR # 38 يأخذ في الاعتبار ما قلته! هل يكفيك أم فاتني شيء؟ 🙂

dmyers ، هل إصلاح YannickYayo يحل مشكلتك؟

dmyers و YannickYayo (و shokme). سؤال آخر: هل تعتقد أنه يجب علينا إزالة v0.10.7 من Packagist ومن GitHub وإنشاء v0.11.0 ؟ أو يكفي مجرد إنشاء v0.11.0 ؟

لقد نسيت أن أذكرها ، لكن إصلاحي الصغير لا يحل المشكلة بـ Wrong parameters for MeiliSearch\Exceptions\HTTPRequestException... :(
سأحاول تصحيحه وتقديم ملاحظات.

في رأيي ، إنشاء v0.11.0 كافي ، يمكنك كتابة تحذير حول v0.10.7 .

نعم ، لقد أجريت بالفعل نفس التغيير كما فعل YannickYayo مع تلميح الكتابة للفهرس وحدث هذا الاستثناء بعد ذلك.

عذرا أغلقت عن طريق الخطأ عن طريق الخطأ.

أتفق مع Yannick على الإصدار ، لكنني لا أعرف كثيرًا عن semver أو أفضل الممارسات في هذه الأشياء لأكون صادقًا ، فأنا أستخدم معظم حزمتي فقط. 😄

راجع للشغل هذا لن يتم إصلاحه ببساطة بـ # 38 لأن هذا الاستثناء ناتج عن تغيير حديث من تبعية MeiliSearch PHP المنبع التي أضافت التوافق مع v0.13 .

https://github.com/meilisearch/meilisearch-laravel-scout/releases/tag/v0.10.7

تحديث :

كنت أستخدم الإصدار 0.12 من محرك Meilisearch ، بعد ترقيته على Docker إلى 0.13 وإعادة فهرسة مستنداتي ، فقد تم حل المشكلة بالنسبة لي!

حسنًا ، آسف يا رفاق ، لقد ذهبت للصيام ، وأنا أفهم أن العلاقات العامة الخاصة بي لا تصلح أي شيء باستثناء جزء صغير من README 😅

حتى الآن YannickYayo ، أفهم أن مشكلتك قد تم إصلاحها ، أليس كذلك؟ لقد قمت بتحديث README في رقم 38 وفقًا لما قلته: meilisearch-laravel-scout v0.10.7 غير متوافق مع MeiliSearch v0.12.0 وما قبله

dmyers ، أفهم أن مشكلتك لا تزال موجودة على الرغم من:

  • تغيير Index إلى Indexes
  • تحديث مثيل MeiliSearch الخاص بك (v0.13.0)

حق؟

curquiza Yep ، باستخدام Meilisearch v0.13.0 أصلح مشكلتي: +1:

لقد كنت أستخدم الإصدار v0.13.0 منذ ما قبل أن أفتح هذه المشكلة.

ما زلت أتلقى هذا الخطأ حتى اليوم ، ولكن يبدو أنه ناتج عن PHP SDK إذا كان مثيل خادم البحث الخاص

أعتقد أن السبب الجذري لسوء استخدام ملحق فئة الاستثناء في فئة HTTPRequestException والذي يقوم بتبديل ترتيب الوسيطة لفئة الاستثناء في PHP stdlib بشكل غير صحيح.

هنا يمكنك رؤية ترتيب args لـ Exception :
https://www.php.net/manual/en/exception.construct.php

انظر الآن إلى ترتيب args لـ HTTPRequestException :
https://github.com/meilisearch/meilisearch-php/blob/master/src/Exceptions/HTTPRequestException.php#L15

الآن بالعودة إلى Laravel ، يتجمد خادم MeiliSearch بطريقة ما أو شيء من هذا القبيل وهذا الخطأ يغمر جدول failed_jobs وبمجرد إعادة تشغيله يتم حله ، لكن هذه المشكلة بدأت بعد ترقية هذه الحزمة. لدي حوالي 80000 سجل في هذا الجدول من هذا منذ أن قمت بالترقية.

Screen Shot 2020-08-17 at 4 18 34 PM

عذرًا dmyers ، لم يكن يجب إغلاق هذه المشكلة ، يا سيئة ، لقد تم إجراؤها تلقائيًا بواسطة GitHub لأنني ربطت المشكلة!

هل يمكنك تقديم الجزء الذي فشل في الكود؟ لأنه من المعقد حاليًا بالنسبة لنا تخمين ما حدث بدون تفاصيل. لم أنجح في الحصول على Error .
في أي حال ، يجب ألا يتم تجميد MeiliSearch بغض النظر عما تفعله. قد يكون السياق مفيدًا حقًا للإبلاغ عنه وإصلاح Error 🙂

dmyers تم دفع تحديث ، وهذا يجب أن يحل "المعلمات الخاطئة".

يجب تحديث الحزمة إلى الإصدار ^0.12 ، والذي سيتطلب منك أيضًا إضافة عميل http ومصنع يمكنك رؤية التفاصيل في تعليمات التثبيت من الملف التمهيدي.

شكرًا جزيلاً على التحديث @ shokme. كنت ما زلت أرى هذه الاستثناءات في جدول الوظائف الفاشلة في تطبيق Laravel الخاص بي ، لكنني كنت أجد صعوبة في الحصول على حالة اختبار قابلة للتكرار لمشاركتها ، لذا فأنا سعيد لأنك تمكنت من حلها.

سأختبر الإصدار الجديد قريبًا.

مرحبًا dmyers ، هل ما زالت هذه مشكلة ، هل يمكنني إغلاقها؟ :)

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات