Не могу установить не единую библиотеку, как исправить?
Не могу установить библиотеки ларавел. Прогуглил все, что можно было, устанавливаю библиотеки вроде тоже правилильно, через композер:
composer requere
Потом обновляю зависимости:
composer dump-autoload
Подкючаю тоже верно, через use
use SwooleRuntime;
В файликах композера - библиотека указана как установлена, в ventor - тоже файлы либы есть, но все равно выдает ошибку
*подключаемая библиотека* not found
Дополнительно:
Но что это за бибилиотека ты нам не скажешь, да? Мы же тут ради того, чтобы в угадайку играть...
<?php declare(strict_types=1); namespace AppModelsModulesApiModels; use IlluminateDatabaseEloquentModel; use IlluminateSupportFacadesHttp; use IlluminateSupportCollection; use IlluminateSupportFacadesLog; use SwooleRuntime; use SwooleCoroutineHttpClient; class ApiGetter extends Model { protected string $apiUrl; protected string $baseUrl = 'https://api.cargo.tech/v1/'; protected int $limit; public function __construct($requestUrl, $limit) { $this->apiUrl = $this->baseUrl . $requestUrl; $this->limit = $limit; } public function getItems(int $itemsCount, int $offset = 0): Collection { $url = $this->apiUrl; $limit = $this->limit; $data = new Collection(); SwooleRuntime::enableCoroutine(); // Создаем массив для хранения корутин $coroutines = []; for ($page = $offset; $page < $offset + $itemsCount; $page++) { $urlWithParams = $url . "?limit={$limit}&offset=$page"; // Создаем корутину для каждого запроса $coroutines[] = go(function () use ($urlWithParams) { $client = new Client($urlWithParams); $client->get(); if ($client->statusCode === 200) { $response = $client->body; $responseData = json_decode($response, true); $data->push(...$responseData['data']); } $client->close(); }); } // Дожидаемся завершения всех корутин foreach ($coroutines as $coroutine) { $coroutine->join(); } return $data; } |
<?php declare(strict_types=1); namespace AppModelsModulesApiModels; use IlluminateDatabaseEloquentModel; use IlluminateSupportFacadesHttp; use IlluminateSupportCollection; use IlluminateSupportFacadesLog; use SwooleRuntime; use SwooleCoroutineHttpClient; class ApiGetter extends Model { protected string $apiUrl; protected string $baseUrl = 'https://api.cargo.tech/v1/'; protected int $limit; public function __construct($requestUrl, $limit) { $this->apiUrl = $this->baseUrl . $requestUrl; $this->limit = $limit; } public function getItems(int $itemsCount, int $offset = 0): Collection { $url = $this->apiUrl; $limit = $this->limit; $data = new Collection(); SwooleRuntime::enableCoroutine(); // Создаем массив для хранения корутин $coroutines = []; for ($page = $offset; $page < $offset + $itemsCount; $page++) { $urlWithParams = $url . "?limit={$limit}&offset=$page"; // Создаем корутину для каждого запроса $coroutines[] = go(function () use ($urlWithParams) { $client = new Client($urlWithParams); $client->get(); if ($client->statusCode === 200) { $response = $client->body; $responseData = json_decode($response, true); $data->push(...$responseData['data']); } $client->close(); }); } // Дожидаемся завершения всех корутин foreach ($coroutines as $coroutine) { $coroutine->join(); } return $data; }
{
"name": "laravel/laravel",
"type": "project",
"description": "The skeleton application for the Laravel framework.",
"keywords": ["laravel", "framework"],
"license": "MIT",
"require": {
"php": "^8.1",
"amphp/amp": "^3.0",
"amphp/http-client": "^5.0",
"guzzlehttp/guzzle": "^7.8",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.2",
"laravel/tinker": "^2.8",
"swooletw/laravel-swoole": "^2.13"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",
"laravel/pint": "^1.0",
"laravel/sail": "^1.18",
"mockery/mockery": "^1.4.4",
"nunomaduro/collision": "^7.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^10.1",
"spatie/laravel-ignition": "^2.0"
},
"autoload": {
"psr-4": {
"App\": "app/",
"Database\Factories\": "database/factories/",
"Database\Seeders\": "database/seeders/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
},
"scripts": {
"post-autoload-dump": [
"Illuminate\Foundation\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force"
],
"post-root-package-install": [
"@php -r "file_exists('.env') || copy('.env.example', '.env');""
],
"post-create-project-cmd": [
"@php artisan key:generate --ansi"
]
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"config": {
"optimize-autoloader": true,
"preferred-install": "dist",
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
}
},
"minimum-stability": "stable",
"prefer-stable": true
}
Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа.
Ответы:
Is there any prerequisite to use this package?
Yes, Swoole extension(>1.9.3) and PHP 7.2 are required to use this package.
https://github.com/swooletw/laravel-swoole/wiki/Z4.-Q&A
Класс, который у вас не находится, реализуется не в ларавелевском коннекторе, а в расширении, которое нужно устанавливать отдельно.
Проблема в вашем неумении читать документацию, всё остальное работает как должно.
-
Класс, который у вас не находится, реализуется не в ларавелевском коннекторе, а в расширении, которое нужно устанавливать отдельно.
Расширение у swole - у меня установлено, так что я не понимаю смысл ваших слов. Это было написано в тексте вопроса.
Проблема в вашем неумении читать документацию, всё остальное работает как должно.
Я думаю, что без таких неприятных слов можно было бы обойтись. Как минимум не из-за такта, а из-за того факта, что документация была мной прочитана, а ссылка которую вы отправили - не является документацией. Это Q&A, те вопросы и ответы. Ничего общего с документацией, как и с решением, которым ваш ответ был отмечен - это не имеет.
-
Это было написано в тексте вопроса.
Покажите, пожалуйста, это место — я не вижу.
А ещё лучше — покажите, что оно указано как подключенное в phpinfo().
- Прошу.
Подключение из phpinfo
swoole
Swoole enabled
Author Swoole Team
Version 5.1.0
Built Oct 24 2023 14:35:35
coroutine enabled with boost asm context
kqueue enabled
rwlock enabled
http2 enabled
json enabled
pcre enabled
zlib 1.2.11
brotli E16781312/D16781312
async_redis enabled
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для начала, давайте разберем основные причины, по которым у вас может возникать проблема с установкой библиотек. Одной из возможных причин может быть неправильно настроенный менеджер зависимостей, такой как Composer.
Первым шагом я рекомендую вам проверить версию PHP, которую вы используете, и сравнить ее с требованиями библиотеки, которую вы пытаетесь установить. Если версия PHP не соответствует требованиям, вам необходимо обновить PHP до необходимой версии.
Вторым шагом будет проверка вашего менеджера зависимостей. Убедитесь, что у вас установлен Composer и он работает корректно. Если нет, вам необходимо установить Composer и настроить его, следуя официальной документации.
Третьим шагом будет проверка наличия необходимых расширений PHP. Многие библиотеки требуют определенные расширения PHP для работы. Убедитесь, что у вас установлены все необходимые расширения, иначе установка библиотеки будет невозможна.
Четвертым шагом будет проверка прав доступа к директории, в которую вы пытаетесь установить библиотеку. Убедитесь, что у вас есть достаточные права доступа для записи в эту директорию.
Если после всех этих шагов проблема все еще не решена, попробуйте обновить Composer до последней версии и повторите попытку установки библиотеки.
Вот пример кода на PHP для установки библиотеки с использованием Composer:
composer require vendor/package
Надеюсь, что эти рекомендации помогут вам решить проблему с установкой библиотек и вы сможете успешно продолжить разработку вашего проекта. Если у вас возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью!