Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Есть приложение которое работает только в локалке. Я его поснифил там простые GET запросы и ответы в XML. Соответственно из интернета доступа к этим данным нет.
там в .INI файле есть настройка, типа - адрес сервера 10.******
Уже проброшен порт до моего локального сервера.
Как сделать, что бы мой сервер получал GET от приложения и отдавал XML в неизменном виде? Что бы было понятнее:
Приложение делает GET запрос типа 10*****/get_base.php?database=lastpic
В ответ получает:
<?xml version="1.0" encoding="UTF-8"?>
<data>
<row>
<id>0</id>
<Name>-</Name>
</row>
<row>
<id>1</id>
<Name>pic13131</Name>
</row>
<row>
<id>2</id>
<Name>pic12943</Name>
</row>
<row>
<id>3</id>
<Name>pic30063</Name>
</row>
<row>
<id>4</id>
<Name>pic01545</Name>
</row>
</data>
я сделал artisan command
namespace App\Console\Commands;
use Illuminate\Console\Command;
class localGetDb extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'LocallGetDb {dbString}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'взять любую базу c локалки если нужно';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$data=file_get_contents('http://10.10.1.6/get_db.php?'.$this->argument('dbString'));
echo($data);
}
}
в routes/web.php сделал
Route::get('/get_db.php/',function(){
$stringConnection='';
foreach ($_REQUEST as $keycs =>$cs){
$stringConnection=$keycs.'='.$cs.'&';
}
Artisan::call('MegapolGetDb',['dbString' => $stringConnection]);
});
Это самый оптимальный вариант, или есть путь правильнее?
Спасибо Normand.
Eugen_K - вы несомненно хотели помочь мне. И ваши наводящие вопросы бесценны. Вам - спасибо.
Если получится, что то дельное отпишусь.
Содержательный ответ.
Помогло переименование в .local
Уважаемые эксперты, суть моего вопроса - В какую сторону смотреть, чтобы сделать биллинг на ларавел.
на портале нужно иметь внутренний счет, с которого списываются баллы за выполнение одних функций и добавление баллов за выполнение других.
Возможно, я совсем нуб, но подскажите, как на ospanel запустить laravel. автоматом переходит на https протокол, браузер ругается на отсутствие сертификата.
Если есть мануал на обход этой проблемы дайте пожалуйста ссылку.
Раньше ставил, на опенсервер и оспанель, на другом компе, проблем не было, но он приказал долго жить.
Выручайте, до продакшена этот проект не дойдет скорее всего, пишу как обучалку для себя, так, что сертификат, априори не нужен.
ps
установил laravel V5.6 + orchid
Всем спасибо, помогли.
Консольный скрипт справился.
Помогите, знающие люди, сами мы не местные.. упс.. не от туда:)
В двух словах о проблеме(надеюсь экстрасенсы не потребуются).
Загружаю данные в xml со стороннего сервера
$xml=simplexml_load_file($conectionStr);
там порядка 2К..4К строк каждая с ~30 параметрами
далее в цикле
foreach($xml->row as $item){
appartments::firstOrCreate([id'=> $item->id,
'objtypes_Id'=>$item->objtypes_Id,
'RoomTtl'=>$item->RoomTtl,
'RoomSale'=>$item->RoomSale,
'PartTtl' =>$item->PartTtl, ]);
там больше параметров, но для примера сойдет и так,
пытаюсь вставить в таблицу только те которых записи, которых еще нет.
Но выхожу за пределы 180 сек отпущенных на работу скрипта.
Вопрос: Что делать и кто виноват... опять не то
Как можно этот скрипт разбить на несколько этапов. Например, обрабатывать 10 строк, потом следующие 10 и.тд
Всем, заранее, спасибо.
Помогите разобраться с обработкой XML.
Буду благодарен, если ткнете мордой в какой нибудь туториал, а лучше в примеры работы c XML в Laravel
Спасибо, с first() сработало. однако логики не понял.
firstorFaiil() возвращает первую найденную строку, либо false, или генерирует исключение?
Набросков нет, но есть ссылка
https://laravel.ru/docs/v5/helpers#маршруты
Вроде тут достаточно для динамической генерации маршрутов
production.ERROR: exception 'Illuminate\Database\Eloquent\ModelNotFoundException' with message 'No query results for model [App\seller]
Вот такая ошибка выходит, а ругается где то здесь
public function addPhone(Request $request)
{
$phone = $request->input('phone');
if (!sellers::where('phone', '=', $phone)->firstOrFail()) {
$addphone = new sellers;
$addphone->user_id = Auth::User()->id;
$addphone->phone = $request->phone;
$addphone->save();
return Auth::User()->id . ' вставил ' . $request->phone;
}
}
Где то туплю, но не знаю где. Выручайте.
Я тоже нуб, но кажется мне, что Post это модель.
Создаёшь модель типа Post (ну или какую захочешь) и таким образом получаешь доступ к таблице в БД.
Поправьте если не прав.