Где создавать контроллеры и модули для для консольного запуска
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Где создавать контроллеры и модули для для консольного запуска
Здравствуйте . Борюсь все с websocket. Читаю стаю и пытаюсь сделать тоже самое. Не получается никак так как не понимаю куда эти файлы все деть. Написано что в консоле но ведь это же системная папка и как бы туда нельзя ничего класть . А как тогда ? Подскажите как это с консолным запуском все делается. Спасибо заранее
http://satirics.net/wp/2015/09/22/%D1%8 ... 0%B2-yii2/
http://satirics.net/wp/2015/09/22/%D1%8 ... 0%B2-yii2/
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
Никто не сталкивался с этим?
Re: Где создавать контроллеры и модули для для консольного запуска
Поясните.evgeniy123 писал(а):Написано что в консоле но ведь это же системная папка и как бы туда нельзя ничего класть .
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
У меня basic. Домой приеду попробую так
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
jakiro писал(а):Не оно https://yadi.sk/d/aKlG4MFtu4fny ?
сделал папку console. В ней создал components i controllers
console.php
Код: Выделить всё
'controllerMap' => [
'websocket' => 'morozovsk\yii2-websocket\console\controllers\WebsocketController',
'socket' => '@app/console/controllers/SocketController'
],
'components' => [
'SocketServer' => [
'class' => '@app/console/components/SocketServer'
],
вот что происходит в консоли:
Код: Выделить всё
./yii socket/start-socket
Exception 'ReflectionException' with message 'Class @app\console\controllers\SocketController does not exist'
in /var/www/vendor/yiisoft/yii2/di/Container.php:422
Stack trace:
#0 /var/www/vendor/yiisoft/yii2/di/Container.php(422): ReflectionClass->__construct('@app\\console\\co...')
#1 /var/www/vendor/yiisoft/yii2/di/Container.php(362): yii\di\Container->getDependencies('@app\\console\\co...')
#2 /var/www/vendor/yiisoft/yii2/di/Container.php(154): yii\di\Container->build('@app\\console\\co...', Array, Array)
#3 /var/www/vendor/yiisoft/yii2/BaseYii.php(340): yii\di\Container->get('@app\\console\\co...', Array)
#4 /var/www/vendor/yiisoft/yii2/base/Module.php(507): yii\BaseYii::createObject('@app\\console\\co...', Array)
#5 /var/www/vendor/yiisoft/yii2/base/Module.php(448): yii\base\Module->createController('socket/start-so...')
#6 /var/www/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('socket/start-so...', Array)
#7 /var/www/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('socket/start-so...', Array)
#8 /var/www/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#9 /var/www/yii(20): yii\base\Application->run()
#10 {main}
Re: Где создавать контроллеры и модули для для консольного запуска
Это вы так класс указываете?:
Поменяйте на:
Код: Выделить всё
'@app/console/controllers/SocketController'
Код: Выделить всё
'app\\console\\controllers\\SocketController'
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
К сожалению не работал YII2. Понять не могу чего ему не хватает. Всё же делаю правильно как написано. может какие то изменения в YII2 были ?maleks писал(а):Это вы так класс указываете?:Поменяйте на:Код: Выделить всё
'@app/console/controllers/SocketController'
Код: Выделить всё
'app\\console\\controllers\\SocketController'
Код: Выделить всё
# php yii socket/start-socket
<?
namespace console\controllers;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use console\components\SocketServer; //не забудьте поменять, если отличается
class SocketController extends \yii\console\Controller
{
public function actionStartSocket($port=8080)
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new SocketServer()
)
),
$port
);
$server->run();
}
}Exception 'yii\base\UnknownClassException' with message 'Unable to find 'app\console\controllers\SocketController' in file: /var/www/console/controllers/SocketController.php. Namespace missing?'
in /var/www/vendor/yiisoft/yii2/BaseYii.php:291
Stack trace:
#0 [internal function]: yii\BaseYii::autoload('app\\console\\con...')
#1 [internal function]: spl_autoload_call('app\\console\\con...')
#2 /var/www/vendor/yiisoft/yii2/di/Container.php(422): ReflectionClass->__construct('app\\console\\con...')
#3 /var/www/vendor/yiisoft/yii2/di/Container.php(362): yii\di\Container->getDependencies('app\\console\\con...')
#4 /var/www/vendor/yiisoft/yii2/di/Container.php(154): yii\di\Container->build('app\\console\\con...', Array, Array)
#5 /var/www/vendor/yiisoft/yii2/BaseYii.php(340): yii\di\Container->get('app\\console\\con...', Array)
#6 /var/www/vendor/yiisoft/yii2/base/Module.php(507): yii\BaseYii::createObject('app\\console\\con...', Array)
#7 /var/www/vendor/yiisoft/yii2/base/Module.php(448): yii\base\Module->createController('socket/start-so...')
#8 /var/www/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('socket/start-so...', Array)
#9 /var/www/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('socket/start-so...', Array)
#10 /var/www/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#11 /var/www/yii(20): yii\base\Application->run()
#12 {main}
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
dmg писал(а):Поясните.evgeniy123 писал(а):Написано что в консоле но ведь это же системная папка и как бы туда нельзя ничего класть .
/var/www/vendor/yiisoft/yii2/console/components (controllers)
Re: Где создавать контроллеры и модули для для консольного запуска
namespace console\controllers;
ну тогда:сделал папку console.
namespace app\console\controllers;
Или в алиасы прописать куда console указывает, начинайте изучать yii2, в доках все есть.
http://www.yiiframework.com/doc-2.0/gui ... iases.html
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
Я знаю все но есть моменты которые я совсем не понимаю. Вот сейчас заменил на ваше предложение и снова тоже самое.maleks писал(а):namespace console\controllers;ну тогда:сделал папку console.
namespace app\console\controllers;
Или в алиасы прописать куда console указывает, начинайте изучать yii2, в доках все есть.
http://www.yiiframework.com/doc-2.0/gui ... iases.html
Засунул в app/commands
Код: Выделить всё
php yii socket/start-socket
<?
namespace app\console\controllers;
use yii\console\Controller;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use SocketServer; //не забудьте поменять, если отличается
class SocketController extends Controller
{
public function actionStartSocket($port=8080)
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new SocketServer()
)
),
$port
);
$server->run();
}
}Exception 'yii\base\UnknownClassException' with message 'Unable to find 'app\commands\SocketController' in file: /var/www/commands/SocketController.php. Namespace missing?'
in /var/www/vendor/yiisoft/yii2/BaseYii.php:291
Stack trace:
#0 [internal function]: yii\BaseYii::autoload('app\\commands\\So...')
#1 [internal function]: spl_autoload_call('app\\commands\\So...')
#2 /var/www/vendor/yiisoft/yii2/base/Module.php(562): class_exists('app\\commands\\So...')
#3 /var/www/vendor/yiisoft/yii2/base/Module.php(520): yii\base\Module->createControllerByID('socket')
#4 /var/www/vendor/yiisoft/yii2/base/Module.php(448): yii\base\Module->createController('socket/start-so...')
#5 /var/www/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('socket/start-so...', Array)
#6 /var/www/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('socket/start-so...', Array)
#7 /var/www/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#8 /var/www/yii(20): yii\base\Application->run()
#9 {main}
Re: Где создавать контроллеры и модули для для консольного запуска
namespace app\console\controllers;
Засунул в app/commands
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
Зделал по примеру HelloControllermaleks писал(а):namespace app\console\controllers;Засунул в app/commands
Re: Где создавать контроллеры и модули для для консольного запуска
если контроллеры лежат в папке commands, то и неймспейс нужно прописывать app\commandsevgeniy123 писал(а):Зделал по примеру HelloControllermaleks писал(а):namespace app\console\controllers;Засунул в app/commands
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
rak писал(а):если контроллеры лежат в папке commands, то и неймспейс нужно прописывать app\commandsevgeniy123 писал(а):Зделал по примеру HelloControllermaleks писал(а):
все было бы очень просто так Пробовал и еще раз сейчас. тоже самое
Код: Выделить всё
php yii socket/start-socket
<?
namespace app\commands;
use yii\console\Controller;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use SocketServer; //не забудьте поменять, если отличается
class SocketController extends Controller
{
public function actionStartSocket($port=8080)
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new SocketServer()
)
),
$port
);
$server->run();
}
}Exception 'yii\base\UnknownClassException' with message 'Unable to find 'app\commands\SocketController' in file: /var/www/commands/SocketController.php. Namespace missing?'
in /var/www/vendor/yiisoft/yii2/BaseYii.php:291
Stack trace:
#0 [internal function]: yii\BaseYii::autoload('app\\commands\\So...')
#1 [internal function]: spl_autoload_call('app\\commands\\So...')
#2 /var/www/vendor/yiisoft/yii2/base/Module.php(562): class_exists('app\\commands\\So...')
#3 /var/www/vendor/yiisoft/yii2/base/Module.php(520): yii\base\Module->createControllerByID('socket')
#4 /var/www/vendor/yiisoft/yii2/base/Module.php(448): yii\base\Module->createController('socket/start-so...')
#5 /var/www/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('socket/start-so...', Array)
#6 /var/www/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('socket/start-so...', Array)
#7 /var/www/vendor/yiisoft/yii2/base/Application.php(375): yii\console\Application->handleRequest(Object(yii\console\Request))
#8 /var/www/yii(20): yii\base\Application->run()
#9 {main}
Re: Где создавать контроллеры и модули для для консольного запуска
ну так прописать нужно <?php вместо <?
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
Вы знаете заработало немного К сожалению теперь просит класс который я поместил в папку веб но он не видит к сожалению. Делаю вот такrak писал(а):ну так прописать нужно <?php вместо <?
Код: Выделить всё
<?php
namespace app\commands;
use yii\console\Controller;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use Ratchet\MessageComponentInterface;
use Ratchet\WebSocket;
use SocketServer; //не забудьте поменять, если отличается
class SocketController extends Controller
{
public function actionStartSocket($port=8080)
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new SocketServer()
)
),
$port
);
$server->run();
}
}
Код: Выделить всё
php yii socket/start-socket
PHP Fatal error: Class 'yii\web\SocketServer' not found in /var/www/commands/SocketController.php on line 19
PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'yii\web\SocketServer' not found'
in /var/www/commands/SocketController.php:19
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
PS. А почему нужно использовать <?php ?
Re: Где создавать контроллеры и модули для для консольного запуска
а где лежит SocketServer? и какой неймспейс?
-
- Сообщения: 401
- Зарегистрирован: 2011.11.01, 17:29
Re: Где создавать контроллеры и модули для для консольного запуска
commands/SocketController.php :rak писал(а):а где лежит SocketServer? и какой неймспейс?
Код: Выделить всё
<?php
namespace app\commands;
use yii\console\Controller;
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use Ratchet\MessageComponentInterface;
use Ratchet\WebSocket;
use SocketServer;
www/SocketServer.php
-----------------------------------
писали так
Код: Выделить всё
use yii\web\SocketServer;
Результат тот же
Re: Где создавать контроллеры и модули для для консольного запуска
при чем тут вообще этот неймспейс use yii\web\SocketServer; ?
если лежит в корне, то прописывать нужно app\SocketServer
ps. а вообще лучше б с php нормально разобраться, а потом уже браться за фреймверки, это ж все азы
если лежит в корне, то прописывать нужно app\SocketServer
ps. а вообще лучше б с php нормально разобраться, а потом уже браться за фреймверки, это ж все азы