


Ce tutoriel montre la création d'une application de recommandation de film à l'aide de Predictionio et de Lumen. Nous couvrirons l'importation de données, la sélection de films aléatoires, la génération de recommandations et le déploiement du moteur.
Concepts clés:
- PredictionOio & Lumen Intégration: Cette application exploite l'apprentissage automatique de PredictionIo pour les recommandations et le cadre léger de Lumen pour une manipulation efficace d'API.
- Configuration sécurisée: Variables d'environnement (
.env
Fichier) Stockage en toute sécurité prédictionio, touches API TMDB et paramètres d'application. - Pipeline de données: Une classe personnalisée
Pio
simplifie l'interaction avec les clients de l'événement et du moteur de Predictionio, l'importation de données TMDB en lots et l'indexation dans Elasticsearch pour une récupération efficace. - Moteur de recommandation: Le moteur s'entraîne aux données du film importées et apprend des interactions utilisateur (goûts / aversions) pour améliorer les recommandations.
- Interface utilisateur: Une interface conviviale affiche des films aléatoires, permet la notation et présente des recommandations générées par la prédiction.
Configuration de l'environnement:
Créez un fichier .env
dans votre répertoire d'applications Lumen avec les suivants:
<code>APP_ENV=local APP_DEBUG=true APP_KEY=your-unique-key // Generate using `php artisan key:generate` PIO_KEY=your-pio-app-key TMDB_KEY=your-tmdb-api-key CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database</code>
N'oubliez pas de remplacer les espaces réservés par vos clés réelles.
Importation de données (TMDB vers Predictionio & Elasticsearch):
- Créer
app/Classes/Pio.php
:
<?php namespace App\Classes; use predictionio\EventClient; use predictionio\EngineClient; class Pio { public function eventClient() { $key = env('PIO_KEY'); $server = 'http://127.0.0.1:7070'; return new EventClient($key, $server); } public function predictionClient() { $server = 'http://127.0.0.1:8192'; return new EngineClient($server); } }
- Activer les sessions dans
bootstrap/app.php
:
$app->middleware([ Illuminate\Session\Middleware\StartSession::class, ]);
- Créer
app/Http/Controllers/AdminController.php
:
<?php namespace App\Http\Controllers; use Laravel\Lumen\Routing\Controller as BaseController; use App\Classes\Pio; use GuzzleHttp\Client; use Elasticsearch\Client as ElasticsearchClient; class AdminController extends BaseController { public function importMovies(Pio $pio) { // ... (Import logic as described in the original, but using more concise variable names and improved formatting) ... } }
(Remarque: L'implémentation de la fonction importMovies
reste en grande partie la même que dans l'original, mais avec l'amélioration de la dénomination variable et du formatage pour la clarté. La logique principale de la récupération de TMDB, d'envoi d'événements à Predictionio et d'indexation dans Elasticsearch reste inchangé.)
- Ajouter l'itinéraire dans
app/Http/routes.php
:
$app->get('/movies/import', 'AdminController@importMovies');
Affichage des films aléatoires et enregistrement des actions des utilisateurs:
- Créer
app/Http/Controllers/HomeController.php
:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Laravel\Lumen\Routing\Controller as BaseController; use App\Classes\Pio; use Elasticsearch\Client as ElasticsearchClient; class HomeController extends BaseController { public function index(Pio $pio) { // ... (Session setup and view rendering as in the original) ... } public function randomMovie(Request $request, Pio $pio) { // ... (Random movie selection and user action recording logic as in the original) ... } public function recommendedMovies(Pio $pio) { // ... (Recommendation retrieval and view rendering logic as in the original) ... } }
- Ajouter des routes dans
app/Http/routes.php
:
$app->get('/', 'HomeController@index'); $app->post('/movie/random', 'HomeController@randomMovie'); $app->get('/movies/recommended', 'HomeController@recommendedMovies');
- Créez les vues
index.blade.php
etrecommended_movies.blade.php
(html comme prévu dans l'original). Le javascript (main.js
) reste également en grande partie le même.
Déploiement et formation du moteur Prédictiono:
- Modifier
engine.json
(dans votre répertoire de moteur Prédictionio) pour pointer correctement votre ID et votre nom d'application Predictionio. - Construisez le moteur:
pio build --verbose
- former le moteur:
pio train --verbose
- Déployez le moteur:
pio deploy --port 8192
Ajouter des travaux cron (ajustez les chemins au besoin):
<code>APP_ENV=local APP_DEBUG=true APP_KEY=your-unique-key // Generate using `php artisan key:generate` PIO_KEY=your-pio-app-key TMDB_KEY=your-tmdb-api-key CACHE_DRIVER=file SESSION_DRIVER=file QUEUE_DRIVER=database</code>
Conclusion:
Cette version rationalisée conserve la fonctionnalité du tutoriel d'origine tout en améliorant la lisibilité et l'organisation du code. N'oubliez pas d'installer les packages nécessaires (SDK Predictionio, Guzzle, Client Elasticsearch et guidon pour le frontend). La section FAQ de l'original reste pertinente et fournit des informations supplémentaires précieuses.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Dans PHP, vous pouvez utiliser session_status () ou session_id () pour vérifier si la session a commencé. 1) Utilisez la fonction session_status (). Si php_session_active est retourné, la session a été lancée. 2) Utilisez la fonction session_id (), si une chaîne non vide est renvoyée, la session a été démarrée. Les deux méthodes peuvent vérifier efficacement l'état de session et le choix de la méthode à utiliser dépend de la version PHP et des préférences personnelles.

SessionsaRevitalInWebapplications, en particulier pour le commerce de commerce.

La gestion de l'accès simultané sur la session en PHP peut être effectuée par les méthodes suivantes: 1. Utilisez la base de données pour stocker les données de session, 2. Utilisez Redis ou Memcached, 3. Implémentez une stratégie de verrouillage de session. Ces méthodes aident à garantir la cohérence des données et à améliorer les performances de la concurrence.

PhpSessionShaveSeverallimitations: 1) StorageConstraintsCanleadToperformanceIssues; 2) SecurityVulnerAbilitiesLikeSessionFixationAttackSexist; 3) ScaliabilityShalngingDuetoServer-SpecificStorage; 4) SessionxpirationManagementCanBeproblematic; 5) DatapeSisSis irest;

L'équilibrage de charge affecte la gestion de la session, mais peut être résolu avec la réplication de la session, l'adhérence des sessions et le stockage centralisé de session. 1. Session Replication Copy Données de session entre les serveurs. 2. Session Stickleness dirige les demandes d'utilisateurs vers le même serveur. 3. Le stockage centralisé de session utilise des serveurs indépendants tels que Redis pour stocker les données de session pour assurer le partage de données.

Session BlockingSateChnique utilisétoenSureAuser'sessionremainSexclusiVetoonUseratatime.ITCUCIALFORPREVERSDATACORUPRUPTIONANDSECRYSEURCHEBRESSInMulti-userApplications.SessionLockingisImplementEdUsingServer-SidelockingMechanisms, telasreentrantLockinjj

Les alternatives aux séances PHP comprennent des cookies, une authentification basée sur des jetons, des sessions basées sur la base de données et Redis / Memcached. 1.CooKies Gérer les sessions en stockant des données sur le client, ce qui est simple mais faible en sécurité. 2. L'authentification basée sur le token utilise des jetons pour vérifier les utilisateurs, ce qui est hautement sécurisé mais nécessite une logique supplémentaire. 3.Database basée sur les séances stocke les données dans la base de données, qui a une bonne évolutivité mais peut affecter les performances. 4. redis / memcached utilise un cache distribué pour améliorer les performances et l'évolutivité, mais nécessite une correspondance supplémentaire

SessionHijacking fait référence à un attaquant imitant un utilisateur en obtenant le SessionID de l'utilisateur. Les méthodes de prévention comprennent: 1) le chiffrement de la communication à l'aide de HTTPS; 2) Vérification de la source du sessionID; 3) Utilisation d'un algorithme de génération de sessionID sécurisé; 4) Mise à jour régulière du SessionID.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP
