все упирается в бд, на ум сразу пришло вынести эту часть в микросервисКакой ещё микросервис? Микросервис, который делает что?
Я понимаю, что python и django не самые быстрые инструменты (мягко скажем)Я вас уверяю, что проблема в вашей компетенции (мягко скажем), а не в инструментах. Есть достаточно проектов, написанных на Джанго, которые вывозят большие нагрузки.
Как видно, на первой позиции в первой строке находится {
Ошибка синтаксического анализа XML
Стоит ли хранить изображения base64 в БД?
composer require symfony/dom-crawler
use Symfony\Component\DomCrawler\Crawler;
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\File;
$desc = $request->input('some_html'); // POST with html
$dom_desc = new Crawler($desc);
$images = $dom_desc->filterXPath('//img')->extract(array('src')); // extract images
foreach ($images as $key => $value) {
if (strpos($value, 'base64') !== false) { // leave alone not base64 images
$data = explode(',', $value); // split image mime and body
$tmp_file = tempnam('/tmp', 'items'); // create tmp file path
file_put_contents($tmp_file, base64_decode($data[1])); // fill temp file with image
$path = Storage::putFile('public/items', new File($tmp_file)); // put file to final destination
$desc = str_replace($value, $path, $desc); // replace src of converted file to fs path
unlink($tmp_file); // delete temp file
}
}
public List<CodeSnippet> LikedCodeSnippets { get; set; } = new List<CodeSnippet>();
public List<User> UsersWhoLiked { get; set; } = new List<User>();
public sealed class UserCodes
{
public int UserId { get; set; }
public User User { get; set; }
public int CodeId { get; set; }
public CodeSnippet Code { get; set; }
}
public User User { get; set; } = null!;
null
и ставить !
как обозначение того, что она not null
? display: contents;
, чтобы не мешался. <?php
class Node
{
protected function func1() {
print "NODE PARENT; ";
}
}
class NodeA extends Node
{
public function FUNC2() {
print "NODE A; ";
}
// Используем метод родителя внутри этого класса
public function func1Overrided() {
print "From parent: " . parent::func1();
}
// Переопределяем метод так, чтобы его нельзя было использовать
protected function func1() {
throw new \Exception("Нельзя вызывать этот метод из NodeB");
}
}
class NodeB extends Node
{
// Функция инициализации
public function onInit(NodeA $a): void
{
// Сделал так, чтобы не мокать api )
(function (?NodeA $a) {
$a->FUNC2(); // Метод успешно вызывется так как он public
$a->func1(); // Метод теперь кидает исключение, использовать не получится
})($a);
}
}
$nodeA = new NodeA;
$nodeA->func1Overrided(); // Работает вызов метода funс1 из родителя
$nodeB = new NodeB;
$nodeB->onInit($nodeA); // Выдаёт ошибку, нельзя использовать метод func1 из класса NodeB
<?php
// Делаем общий трейт для всех классов
trait Func1 {
private function func1() {
print "FUNC1; ";
}
}
class Node
{
// Включаем трейт
use Func1;
}
class NodeA extends Node
{
// Включаем трейт
use Func1;
public function FUNC2() {
print "FUNC 2 NODEA; ";
}
}
class NodeB extends Node
{
// Включаем трейт
use Func1;
// Функция инициализации
public function onInit(NodeA $a): void
{
// Добавить зависимость
(function (?NodeA $a) {
$a->FUNC2(); // Метод успешно вызывется так как он public
$a->func1(); // Метод использовать не получится, т.к. он private
})($a);
}
}
$nodeA = new NodeA;
$nodeB = new NodeB;
$nodeB->onInit($nodeA); // Выдаёт ошибку, нельзя использовать метод func1 из класса NodeB