cari
Rumahpembangunan bahagian belakangtutorial phpMenambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Pada bahagian terakhir, kami belajar tentang Neo4J dan cara menggunakannya dengan PHP. Dalam jawatan ini, kami akan menggunakan pengetahuan itu untuk membina aplikasi rangkaian sosial yang berkuasa Silex dengan pangkalan data graf.

Takeaways Key

Saya akan menggunakan silex, ranting, bootstrap dan neoclient untuk membina aplikasi.

Buat direktori untuk aplikasinya. Saya menamakan spsocial saya.

Tambahkan baris ini ke komposer.json anda dan jalankan komposer Pasang untuk memasang kebergantungan:

anda boleh memuat turun dan memasang bootstrap ke folder web/aset projek anda.

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span></span>
anda boleh mencari aplikasi demo bootstrap di sini juga: https://github.com/sitepoint-editors/social-network

Sediakan aplikasi Silex

kita perlu mengkonfigurasi silex dan mengisytiharkan Neo4JClient supaya ia boleh didapati dalam aplikasi Silex. Buat fail index.php di web/ folder projek anda:

Twig dikonfigurasikan untuk mempunyai fail templat yang terletak di folder SRC/Views.

Laluan rumah yang menunjuk kepada / didaftarkan dan dikonfigurasikan untuk menggunakan WebController yang akan kami buat kemudian.
<span><span><?php </span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span></span>
Struktur aplikasi harus kelihatan seperti ini:



Perhatikan bahawa di sini saya menggunakan Bower untuk memasang bootstrap, tetapi terpulang kepada anda apa yang anda mahu gunakan.

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Langkah seterusnya adalah untuk membuat susun atur asas kami dengan blok kandungan bahawa templat twig anak kami akan ditimpa dengan kandungan mereka sendiri.

Saya akan mengambil tema bootstrap lalai dengan navbar di atas:

halaman rumah (mengambil semua pengguna)

Setakat ini, kami mempunyai NEO4J yang terdapat dalam aplikasi, template asas kami dibuat dan kami ingin menyenaraikan semua pengguna di halaman utama.
<span>
</span><span>
</span><span>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="%7B%7B%20app.request.basepath%20%7D%7D/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span ><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span ><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span ><![endif]-->
</span>
    <span><style>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></span>
</div>
</span><span>
</span><span></span>

kita boleh mencapai ini dalam dua langkah:

  • Buat tindakan pengawal rumah kami dan dapatkan pengguna dari neo4j
  • lulus senarai pengguna ke templat dan senaraikannya

Tindakan pengawal

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span></span>

Pengawal menunjukkan proses, kami mengambil perkhidmatan NEO dan mengeluarkan pertanyaan cypher untuk mengambil semua pengguna.
Koleksi Pengguna kemudian diluluskan ke templat indeks.html.twig.

templat indeks

<span><span><?php </span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span></span>

Template sangat ringan, ia memanjangkan susun atur asas kami dan menambah senarai yang tidak disusun dengan nama pertama pengguna dan nama -nama last dalam blok yang diwarisi kandungan.

Mulakan pelayan PHP terbina dalam dan mengagumi kerja anda:

<span>
</span><span>
</span><span>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="%7B%7B%20app.request.basepath%20%7D%7D/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span ><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span ><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span ><![endif]-->
</span>
    <span><style>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></span>
</div>
</span><span>
</span><span></span>

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Ciri Rangkaian Sosial: Menunjukkan siapa pengguna mengikuti

katakan sekarang bahawa kami ingin mengklik pada pengguna, dan menyampaikan maklumat terperinci dan pengguna yang dia ikuti.

Langkah 1: Buat laluan di index.php

<span><span><?php </span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span></span>
Langkah 2: Buat tindakan pengawal showUser

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul> class<span>="list-unstyled"</span>></ul></span>
</span>        {% for user in users %}
            <span><span><span><li>></li></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></span>></span>
</span>        {% endfor %}
    <span><span><span></span>></span>
</span>{% endblock %}</span></span>
Aliran kerja adalah serupa dengan mana -mana aplikasi lain, anda cuba mencari pengguna berdasarkan log masuk.

Sekiranya tidak wujud, anda menunjukkan halaman ralat 404, jika tidak, anda lulus data pengguna ke templat.

Langkah 3: Buat fail templat Show_user

<span>cd spsocial/web
</span>php <span>-S localhost:8000
</span><span>open localhost:8000</span>
Langkah 4: Refactor Senarai pengguna di laman utama untuk menunjukkan pautan ke profil mereka

<span>$app->get('/user/{login}', 'Ikwattro\SocialNetwork\Controller\WebController::showUser')
</span>    <span>->bind('show_user');</span>
menyegarkan laman web dan klik pada mana -mana pengguna untuk menunjukkan profilnya dan senarai pengguna yang diikuti

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Menambah cadangan

Langkah seterusnya adalah memberikan cadangan kepada profil. Kami perlu sedikit memperluaskan pertanyaan Cypher kami di pengawal dengan menambahkan perlawanan pilihan untuk mencari cadangan berdasarkan rangkaian ijazah kedua.

awalan pilihan menyebabkan perlawanan untuk mengembalikan baris walaupun tidak ada perlawanan tetapi dengan bahagian yang tidak diselesaikan ditetapkan ke batal (sama seperti gabungan luar). Memandangkan kami berpotensi mendapatkan pelbagai laluan untuk setiap rakan-rakan (FOF), kami perlu membezakan hasilnya untuk mengelakkan pendua dalam senarai kami (mengumpul adalah operasi agregasi yang mengumpul nilai ke dalam array):

pengawal yang dikemas kini:

templat yang dikemas kini:
<span>public function showUser(Application $application, Request $request, $login)
</span>    <span>{
</span>        <span>$neo = $application['neo'];
</span>        <span>$q = 'MATCH (user:User) WHERE user.login = {login}
</span><span>         OPTIONAL MATCH (user)-[:FOLLOWS]->(f)
</span><span>         RETURN user, collect(f) as followed';
</span>        <span>$p = ['login' => $login];
</span>        <span>$result = $neo->sendCypherQuery($q, $p)->getResult();
</span>
        <span>$user = $result->get('user');
</span>        <span>$followed = $result->get('followed');
</span>
        <span>if (null === $user) {
</span>            <span>$application->abort(404, 'The user $login was not found');
</span>        <span>}
</span>
        <span>return $application['twig']->render('show_user.html.twig', array(
</span>            <span>'user' => $user,
</span>            <span>'followed' => $followed
</span>        <span>));
</span>    <span>}</span>

anda boleh meneroka cadangan dengan segera dalam aplikasi anda:
{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><h1 id="gt">></h1></span>User informations<span><span></span>></span>
</span>
    <span><span><span><h2 id="gt">></h2></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></span>></span>
</span>    <span><span><span><h3 id="gt">></h3></span>{{ user.property('login') }}<span><span></span>></span>
</span>    <span><span><span><hr>/></span>
</span>
    <span><span><span><div> class<span>="row"</span>>
        <span><span><span><div> class<span>="col-sm-6"</span>>
            <span><span><span><h4 id="gt">></h4></span>User <span><span><span> class<span>="label label-info"</span>></span>{{ user.property('login') }}<span><span></span></span>></span> follows :<span><span></span>></span>
</span>            <span><span><span><ul> class<span>="list-unstyled"</span>></ul></span>
</span>                {% for follow in followed %}
                    <span><span><span><li>></li></span>{{ follow.property('login') }} ( {{ follow.property('firstname') }} {{ follow.property('lastname') }} )<span><span></span>></span>
</span>                {% endfor %}
            <span><span><span></span>></span>
</span>        <span><span><span></span></span></span></span></span></span></span>
</div></span>></span>
</span>    <span><span><span></span></span></span>
</div></span>></span>
</span>
{% endblock %}</span></span></span></span>

menyambung ke pengguna (menambah hubungan) Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Untuk menyambung ke pengguna yang dicadangkan, kami akan menambah pautan borang pos kepada setiap pengguna yang dicadangkan yang mengandungi kedua -dua pengguna sebagai medan tersembunyi. Kami juga akan membuat tindakan laluan dan pengawal yang sepadan.

Membuat laluan:

tindakan pengawal:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span></span>

Tidak ada yang luar biasa di sini, kami sepadan dengan nod pengguna Start dan nod pengguna sasaran dan kemudian kami menggabungkan hubungan berikut yang sama. Kami menggunakan penggabungan hubungan untuk mengelakkan penyertaan pendua.

Templat:

<span><span><?php </span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span></span>

Anda kini boleh mengklik butang ikuti pengguna yang dicadangkan yang ingin anda ikuti:

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J

Mengeluarkan hubungan:

aliran kerja untuk menghilangkan hubungan adalah sama seperti untuk menambah hubungan baru, membuat laluan, tindakan pengawal dan menyesuaikan susun atur:

Laluan:

<span>
</span><span>
</span><span>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="%7B%7B%20app.request.basepath%20%7D%7D/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span ><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span ><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span ><![endif]-->
</span>
    <span><style>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></span>
</div>
</span><span>
</span><span></span>
tindakan pengawal:

<span><span><?php </span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span></span>
Anda dapat melihat di sini bahawa saya menggunakan perlawanan untuk mencari hubungan antara kedua -dua pengguna,

Dan saya menambah pengenal berikut kepada hubungan yang dapat memadamkannya.

Templat:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul> class<span>="list-unstyled"</span>></ul></span>
</span>        {% for user in users %}
            <span><span><span><li>></li></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></span>></span>
</span>        {% endfor %}
    <span><span><span></span>></span>
</span>{% endblock %}</span></span>
Anda kini boleh mengklik butang Keluarkan Hubungan di bawah setiap pengguna yang diikuti:

Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J Kesimpulan

pangkalan data graf adalah sesuai untuk data relasi, dan menggunakannya dengan PHP dan neoclient adalah mudah.

Cypher adalah bahasa pertanyaan yang mudah anda akan cepat suka, kerana ia memungkinkan untuk menanyakan graf anda dengan cara yang semula jadi.


Terdapat banyak manfaat daripada menggunakan pangkalan data graf untuk data dunia sebenar,

Saya menjemput anda untuk mengetahui lebih lanjut dengan membaca manual http://neo4j.com/docs/stable/,

Memandangkan kes penggunaan dan contoh yang dibekalkan oleh pengguna NEO4J dan mengikuti @NEO4J di Twitter.

Soalan Lazim mengenai Menambah Ciri Rangkaian Sosial ke App PHP Dengan Neo4J

Apa itu Neo4J dan mengapa ia penting dalam aplikasi PHP? Adalah penting dalam aplikasi PHP kerana ia membolehkan pemaju menyimpan, mengurus, dan menanyakan data dengan model data grafnya. Dengan NEO4J, anda boleh mengendalikan dan menganalisis jumlah data yang tinggi dalam masa nyata, menjadikannya sesuai untuk membina ciri rangkaian sosial dalam aplikasi PHP.

Untuk memasang NEO4J, anda perlu memuat turun versi terkini dari laman web rasmi dan ikuti arahan pemasangan. Sebaik sahaja dipasang, anda boleh mengkonfigurasinya dengan mengedit fail konfigurasi, biasanya terletak di direktori 'conf' pemasangan NEO4J anda. Anda kemudian boleh menyambungkannya ke aplikasi PHP anda menggunakan klien PHP NEO4J.

Apakah ciri -ciri baru dalam Php 7.4, 8.1, dan 8.3 yang dapat meningkatkan aplikasi saya? Php 8.1 membawa enum, serat, dan sifat baca sahaja. Php 8.3, walaupun belum dibebaskan, dijangka memperkenalkan ciri -ciri baru yang akan meningkatkan lagi permohonan anda. Ciri -ciri ini dapat meningkatkan prestasi, kebolehbacaan, dan pemeliharaan aplikasi PHP anda. Menggunakan NEO4J melibatkan membuat pangkalan data graf, menentukan hubungan antara nod, dan menanyakan pangkalan data. Anda boleh menggunakan bahasa pertanyaan Cypher, Neo4J, untuk berinteraksi dengan pangkalan data graf dari aplikasi PHP anda. Pangkalan data graf, sememangnya lebih sesuai untuk ciri rangkaian sosial daripada jenis pangkalan data lain. Ia membolehkan pertanyaan dan pengendalian hubungan yang kompleks, yang biasa berlaku dalam rangkaian sosial. Ia juga menyediakan prestasi tinggi, skalabiliti, dan fleksibiliti.

Bagaimana saya boleh memindahkan aplikasi PHP saya ke versi yang lebih baru? Kod anda untuk mengalih keluar ciri -ciri yang telah ditetapkan dan menggunakan yang baru, dan menguji aplikasi anda untuk memastikan ia berfungsi dengan betul. Adalah disyorkan untuk melakukan ini dalam persekitaran pembangunan terlebih dahulu sebelum menggunakan perubahan kepada persekitaran pengeluaran. 🎜> Beberapa cabaran umum termasuk mengendalikan jumlah data yang besar, menguruskan hubungan kompleks, dan memastikan prestasi masa nyata. Ini dapat diatasi dengan menggunakan pangkalan data yang sesuai seperti neo4j, mengoptimumkan pertanyaan anda, dan menggunakan struktur data dan algoritma yang cekap. Boleh mengoptimumkan prestasi aplikasi PHP anda dengan NEO4J dengan menggunakan pertanyaan yang cekap, mengindeks data anda, dan menggunakan ciri penalaan prestasi NEO4J yang dibina. Anda juga boleh menggunakan ciri-ciri peningkatan prestasi PHP, seperti penyusunan JIT dan preloading. sambungan, melaksanakan pengesahan dan kebenaran, dan menggunakan ciri keselamatan yang dibina oleh NEO4J. Anda juga harus mengikuti amalan terbaik untuk keselamatan PHP, seperti mengesahkan input, menggunakan pernyataan yang disediakan, dan menjaga pemasangan PHP anda terkini.

Di mana saya boleh mencari sumber untuk mengetahui lebih lanjut mengenai menggunakan NEO4J dengan PHP? Terdapat juga banyak kursus, buku, dan blog dalam talian yang merangkumi topik ini secara mendalam.

Atas ialah kandungan terperinci Menambah ciri rangkaian sosial ke aplikasi PHP dengan NEO4J. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Apakah perbezaan antara unset () dan session_destroy ()?Apakah perbezaan antara unset () dan session_destroy ()?May 04, 2025 am 12:19 AM

ThedifferenceBetweenUnset () andSession_destroy () isThatunset () clearsspecificSessionVariableswhileKeepingTheSessionActive, sedangkan assesion_destroy () terminatestheentiressies.1)

Apakah Sesi Sticky (Affinity Sesi) dalam konteks pengimbangan beban?Apakah Sesi Sticky (Affinity Sesi) dalam konteks pengimbangan beban?May 04, 2025 am 12:16 AM

StickySessionseSenseSerRequestSarerOutedTotheseServerForSessionDataConsistency.1) sessionentificationassignsuserverserversusingciesorurlmodifications.2) consistentroutingdirectssubsequentrequeststotheserver.3) loadbalansingdistributesNewuser

Apakah sesi yang berbeza menyimpan pengendali yang terdapat di PHP?Apakah sesi yang berbeza menyimpan pengendali yang terdapat di PHP?May 04, 2025 am 12:14 AM

Phpoffersvarioussessionsavehandlers: 1) Fail: lalai, SimpleButmayBottLeneckonHigh-Trafficsites.2) Memcached: berprestasi tinggi, idealforspeed-kritikalapplications.3) Redis: similartomemcached

Apakah sesi dalam PHP, dan mengapa mereka digunakan?Apakah sesi dalam PHP, dan mengapa mereka digunakan?May 04, 2025 am 12:12 AM

Sesi dalam PHP adalah mekanisme untuk menyimpan data pengguna di sisi pelayan untuk mengekalkan keadaan antara pelbagai permintaan. Khususnya, 1) sesi dimulakan oleh fungsi session_start (), dan data disimpan dan dibaca melalui array super global $ _Session; 2) data sesi disimpan dalam fail sementara pelayan secara lalai, tetapi boleh dioptimumkan melalui pangkalan data atau storan memori; 3) Sesi ini boleh digunakan untuk merealisasikan fungsi pengesan status pengguna dan fungsi keranjang belanja; 4) Perhatikan pengoptimuman penghantaran dan prestasi yang selamat bagi sesi untuk memastikan keselamatan dan kecekapan permohonan.

Terangkan kitaran hayat sesi PHP.Terangkan kitaran hayat sesi PHP.May 04, 2025 am 12:04 AM

PHPSSsionsStartWithSesion_start (), yang manageneratesauniqueidAndreateSererVerVerFile; tHePersisTacrossRequestSandCanBeManualEltersenedWithSession_destroy ()

Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?Apakah perbezaan antara masa tamat sesi mutlak dan terbiar?May 03, 2025 am 12:21 AM

Timeout sesi mutlak bermula pada masa penciptaan sesi, sementara waktu tamat sesi terbiar bermula pada masa operasi pengguna. Tamat masa sesi mutlak sesuai untuk senario di mana kawalan ketat kitaran hayat sesi diperlukan, seperti aplikasi kewangan; Timeout sesi terbiar sesuai untuk aplikasi yang mahu pengguna menyimpan sesi mereka aktif untuk masa yang lama, seperti media sosial.

Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?Apakah langkah yang akan anda ambil jika sesi tidak berfungsi di pelayan anda?May 03, 2025 am 12:19 AM

Kegagalan sesi pelayan boleh diselesaikan dengan mengikuti langkah -langkah: 1. Semak konfigurasi pelayan untuk memastikan sesi ditetapkan dengan betul. 2. Sahkan kuki klien, sahkan bahawa penyemak imbas menyokongnya dan hantar dengan betul. 3. Periksa perkhidmatan penyimpanan sesi, seperti Redis, untuk memastikan bahawa mereka beroperasi secara normal. 4. Semak kod aplikasi untuk memastikan logik sesi yang betul. Melalui langkah -langkah ini, masalah perbualan dapat didiagnosis dengan berkesan dan diperbaiki dan pengalaman pengguna dapat diperbaiki.

Apakah kepentingan fungsi session_start ()?Apakah kepentingan fungsi session_start ()?May 03, 2025 am 12:18 AM

session_start () iscrucialinphpformanaginguserSessions.1) itinitiatesanewsessionifnoneexists, 2) resumeSanexistingsession, dan3) setSasessionCookieforcontinuityAcrossrequests, enableingApplicationeUseUshenticationandPersonalConizedConizedContentContentContentContentContentContentContentContentContentContentContentC.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 Linux versi baharu

SublimeText3 Linux versi baharu

SublimeText3 Linux versi terkini

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular