ServBay में Zend Framework (Laminas) प्रोजेक्ट बनाना और चलाना
परिचय
Zend Framework (जो अब Laminas Project का हिस्सा है) एक शक्तिशाली ओपन सोर्स PHP फ्रेमवर्क है, जो मॉडर्न वेब एप्लीकेशन और सर्विसेज तैयार करने के लिए उच्च गुणवत्ता की, ऑब्जेक्ट-ओरिएंटेड कंपोनेंट्स का सेट प्रदान करता है। इसकी लचीलापन, मॉड्यूलर डिज़ाइन और उच्च प्रदर्शन इसे साधारण वेबसाइट से लेकर बड़े एंटरप्राइज एप्लीकेशंस के लिए आदर्श बनाते हैं।
ServBay, macOS के लिए डिज़ाइन किया गया एक स्थानीय वेब डेवलपमेंट वातावरण है। इसमें PHP, कई वेब सर्वर (जैसे Caddy और Nginx), डेटाबेस (जैसे MySQL, PostgreSQL, MongoDB), कैशिंग सर्विसेज (जैसे Redis, Memcached), और अन्य डेवलपमेंट टूल्स एकीकृत हैं। ServBay आपके स्थानीय सिस्टम पर यह सभी पैकेज सेटअप और मैनेज करना बहुत आसान बना देता है, जिससे किसी भी PHP फ्रेमवर्क प्रोजेक्ट को लोकली चलाना बेहद सहज हो जाता है।
यह दस्तावेज़ आपको ServBay में Zend Framework (Laminas) प्रोजेक्ट बनाने और चलाने हेतु स्टेप-बाय-स्टेप गाइड करेगा, और बताएगा कि कैसे आपको ServBay की डेटाबेस व कैश सेवाओं को अपने प्रोजेक्ट के साथ इंटीग्रेट करना है।
पूर्व आवश्यकताएँ
शुरू करने से पहले सुनिश्चित करें कि आपने निम्न चीजें कर ली हैं:
- ServBay इंस्टॉल करें: आपके macOS सिस्टम पर ServBay सफलतापूर्वक इंस्टॉल और चल रहा है। अगर आपने इंस्टॉल नहीं किया है, तो ServBay की आधिकारिक वेबसाइट प जाएँ और डाउनलोड/इंस्टॉलेशन गाइड देखें।
- ServBay पैकेज: सुनिश्चित करें कि आपके ServBay में आवश्यक सभी पैकेज इंस्टॉल और रनिंग हैं, जिनमें शामिल हैं:
- कम से कम एक PHP वर्ज़न (PHP 8.x या इससे ऊपर अनुशंसित है, क्योंकि नए Zend Framework/Laminas वर्शन इसके लिए ज़्यादा वर्शन की आवश्यकता रखते हैं)
- वेब सर्वर (Caddy या Nginx)
- Composer (आमतौर पर ServBay में इनबिल्ट)
- आपके इच्छित डेटाबेस सर्विसेज (जैसे MySQL, PostgreSQL) व कैश सर्विसेज (जैसे Memcached, Redis)। इन्हें ServBay कंट्रोल पैनल से चालू करें।
Zend Framework प्रोजेक्ट बनाना
ServBay सलाह देता है कि आप अपनी वेबसाइट परियोजनाएँ /Applications/ServBay/www
फोल्डर में रखें। इससे ServBay वेबसाइट का ऑटोमैटिक प्रबंधन और कॉन्फ़िगरेशन कर सकता है।
वेबसाइट रूट डाइरेक्टरी में जाएँ
टर्मिनल खोलें और वेबसाइट रूट डायरेक्ट्री में नेविगेट करें:
bashcd /Applications/ServBay/www
1Composer का उपयोग करके प्रोजेक्ट बनाएं
ServBay के साथ Composer पहले से इनस्टॉल होता है। Composer के
create-project
कमांड का उपयोग करके नया Zend Framework (Laminas skeleton application) प्रोजेक्ट बनाएं, जिस का नाम यहाँservbay-zend-app
रखें:bashcomposer create-project laminas/laminas-skeleton-application servbay-zend-app
1यह Zend Framework (Laminas) का स्केलेटन एप्लीकेशन डाउनलोड करेगा और आवश्यक dependencies इंस्टॉल करेगा।
प्रोजेक्ट डायरेक्ट्री में जाएँ
नए बनाए गए प्रोजेक्ट के फोल्डर में जाएँ:
bashcd servbay-zend-app
1
वेब सर्वर कॉन्फ़िगर करना
ब्राउज़र से Zend Framework प्रोजेक्ट एक्सेस करने के लिए आपको ServBay में एक वेबसाइट सेटअप करनी होगी।
- ServBay कंट्रोल पैनल खोलें: ServBay एप्लीकेशन शुरू करें।
- वेबसाइट सेटिंग्स पर जाएँ: कंट्रोल पैनल में Websites टैब चुनें।
- नई वेबसाइट जोड़ें: नीचे बाईं ओर
+
बटन पर क्लिक कर नई वेबसाइट जोड़ें। - वेबसाइट जानकारी भरें:
- Name: जैसे
My Zend Dev Site
- Domain: वह डोमेन जिससे आप प्रोजेक्ट एक्सेस करना चाहते हैं, सुझावित रूप से
.local
या.test
एक्सटेंशन जैसेservbay-zend-test.local
(ServBay ऑटोमेटिक local DNS रजिस्ट्रेशन हैंडल कर देगा) - Website Type:
PHP
चुनें - PHP Version: आपका इंस्टॉल और रनिंग PHP वर्शन (जैसे
8.3
) - Document Root: प्रोजेक्ट में
public
फोल्डर चुने:/Applications/ServBay/www/servbay-zend-app/public
- Name: जैसे
- सेव करके रिस्टार्ट करें: Save पर क्लिक करें। बदलाव लागू करने के लिए पुष्टि करें। आपका नया वेबसाइट कॉन्फ़िगरेशन सक्रिय हो जाएगा।
अधिक डिटेल के लिए ServBay दस्तावेज में पहली वेबसाइट जोड़ें सेक्शन देखें।
बेसिक "Hello ServBay!" उदाहरण
अब हम अपने प्रोजेक्ट के कोड को संशोधित करेंगे ताकि जब जड़ URL (/
) एक्सेस हो तो "Hello ServBay!" दिखाई दे।
रूटिंग और कंट्रोलर कॉन्फ़िगर करें (module.config.php)
प्रोजेक्ट की
module/Application/config/module.config.php
फ़ाइल संपादित करें। सुनिश्चित करें कि इसमें नीचे दी गई बेसिक रूटिंग और कंट्रोलर कांफिगरेशन मौजूद है:php<?php declare(strict_types=1); namespace Application; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use Laminas\ServiceManager\Factory\InvokableFactory; return [ 'router' => [ 'routes' => [ 'home' => [ 'type' => Literal::class, 'options' => [ 'route' => '/', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'index', ], ], ], // ... अन्य रूटिंग कॉन्फ़िगरेशन ], ], 'controllers' => [ 'factories' => [ Controller\IndexController::class => InvokableFactory::class, ], ], 'view_manager' => [ 'display_not_found_reason' => true, 'display_exceptions' => true, 'doctype' => 'HTML5', 'not_found_template' => 'error/404', 'exception_template' => 'error/index', 'template_map' => [ 'layout/layout' => __DIR__ . '/../view/layout/layout.phtml', 'application/index/index' => __DIR__ . '/../view/application/index/index.phtml', 'error/404' => __DIR__ . '/../view/error/404.phtml', 'error/index' => __DIR__ . '/../view/error/index.phtml', ], 'template_path_stack' => [ __DIR__ . '/../view', ], ], // ... अन्य कॉन्फ़िगरेशन ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49नोट: ऊपर दिया गया कोड
module.config.php
का अंश है, इसे अपनी मौजूद सेटिंग्स में जोड़ें। सुनिश्चित करें कि'home'
रूट औरController\IndexController::class
फैक्ट्री डिफिनिशन मौजूद हो।कंट्रोलर बनाएं/संशोधित करें (IndexController.php)
फ़ाइल
module/Application/src/Controller/IndexController.php
बनाएं या संपादित करें।indexAction
कोड में संदेश ViewModel के ज़रिए भेजें:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class IndexController extends AbstractActionController { /** * Default action to display the welcome page. */ public function indexAction() { // एक ViewModel लौटाएँ और 'message' वेरिएबल व्यू तक पहुंचाएं return new ViewModel([ 'message' => 'Hello ServBay!', ]); } // ... अन्य एक्शन मेथड्स }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24व्यू फाइल बनाएं/संशोधित करें (index.phtml)
फ़ाइल
module/Application/view/application/index/index.phtml
बनाएं/संपादित करें, जिसमें यह कंटेंट हो:php<h1><?php echo $this->message; ?></h1>
1यहाँ
$this->message
का प्रयोग कंट्रोलर से डेटा पाने के लिए किया गया है।
वेबसाइट एक्सेस करें
अपने पसंदीदा वेब ब्राउजर में ServBay में बनाए डोमेन, जैसे https://servbay-zend-test.local
पर जाएँ।
अगर सब सही से कॉन्फ़िगर हो गया है तो पेज पर Hello ServBay!
दिखाई देगा। यानी ServBay में आपका Zend Framework प्रोजेक्ट सफलतापूर्वक चल रहा है।
डेटाबेस और कैश एकीकरण उदाहरण
ServBay बहु-प्रकार के डेटाबेस (MySQL, PostgreSQL) और कैशिंग सर्विस (Redis, Memcached) को सपोर्ट करता है। नीचे उदाहरण बताए गए हैं कि किस तरह से Zend Framework प्रोजेक्ट में ये सेवा कैसे जोड़ सकते हैं।
महत्वपूर्ण: ये सभी उदाहरण स्वतंत्र डेमो हैं। वास्तव में आप आवश्यकता के अनुसार कोई एक डेटाबेस और एक या अनेक कैश सेवा का उपयोग करेंगे और डिपेंडेंसी इंजेक्शन आदि से कनेक्शन मैनेज करेंगे। सभी उदाहरणों के लिए संबंधित सर्विस ServBay में चालू होनी चाहिए।
डेटाबेस इंटरैक्शन उदाहरण - टेबल बनाना
Laminas DB कंपोनेंट द्वारा डेटाबेस के साथ इंटरैक्शन तथा सिंपल टेबल बनाने का तरीका:
Laminas DB कंपोनेंट इंस्टॉल करें
प्रोजेक्ट रूट में:
bashcomposer require laminas/laminas-db
1मैन्युअली डेटाबेस बनाएं
डेटाबेस
servbay_zend_app
को ServBay कंट्रोल पैनल से मैन्युअली बनाएँ (phpMyAdmin, pgAdmin, आदि से)। MySQL/MariaDB के लिए डिफ़ॉल्ट यूज़र:root
, पासवर्ड:password
। PostgreSQL के लिए भी यही डिफॉल्ट हैं।टेबल बनाने की स्क्रिप्ट (डेमो)
प्रोजेक्ट रूट या किसी टेम्प फोल्डर में
create_users_table.php
फाइल बनाएं:php<?php // create_users_table.php use Laminas\Db\Adapter\Adapter; use Laminas\Db\Sql\Sql; // मान लें आप MySQL/MariaDB उपयोग कर रहे हैं $adapter = new Adapter([ 'driver' => 'Pdo_Mysql', // या 'Pdo_Pgsql' 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', // ServBay डिफ़ॉल्ट पासवर्ड 'hostname' => '127.0.0.1', // 'port' => 3306, // MySQL डिफ़ॉल्ट पोर्ट // 'port' => 5432, // PostgreSQL डिफ़ॉल्ट पोर्ट ]); $sql = new Sql($adapter); // users टेबल बनाने का SQL $create = $sql->createTable('users') ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Integer('id', false, null, ['AUTO_INCREMENT' => true])) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('name', 255)) ->addColumn(new \Laminas\Db\Sql\Ddl\Column\Varchar('email', 255, ['UNIQUE' => true])) ->addConstraint(new \Laminas\Db\Sql\Ddl\Constraint\PrimaryKey('id')); echo "Executing SQL:\n"; echo $sql->buildSqlString($create, $adapter->getPlatform()) . "\n"; try { // SQL चलाएँ $adapter->query( $sql->buildSqlString($create, $adapter->getPlatform()), Adapter::QUERY_MODE_EXECUTE ); echo "Table 'users' created successfully.\n"; } catch (\Exception $e) { echo "Error creating table: " . $e->getMessage() . "\n"; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38नोट: यह मैन्युअल उदाहरण है। रेगुलर प्रोजेक्ट में Laminas Migrations यूज़ करें।
टर्मिनल से PHP CLI द्वारा इस स्क्रिप्ट को चलाएँ:
bashphp create_users_table.php
1
MySQL एकीकरण उदाहरण
Zend Framework कंट्रोलर में MySQL कनेक्शन और क्वेरी का उदाहरण:
डेटाबेस कनेक्शन सेट करें
config/autoload/global.php
में MySQL की सेटिंग्स जोड़ें:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Mysql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 3306, 'charset' => 'utf8mb4', ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14कंट्रोलर फैक्ट्री सेट करें (module.config.php)
कंट्रोलर में
Laminas\Db\Adapter\Adapter
डिपेंडेंसी इंजेक्शन के लिए फैक्ट्री सेट करें:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\ServiceManager\Factory\InvokableFactory; use Laminas\Db\Adapter\AdapterInterface; return [ // ... अन्य सेटिंग्स 'controllers' => [ 'factories' => [ Controller\IndexController::class => function($container) { $adapter = $container->get(AdapterInterface::class); return new Controller\IndexController($adapter); }, ], ], 'service_manager' => [ 'aliases' => [ AdapterInterface::class => 'Laminas\Db\Adapter\Adapter', ], 'factories' => [ 'Laminas\Db\Adapter\Adapter' => \Laminas\Db\Adapter\AdapterServiceFactory::class, ], ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27नोट: अपनी
module.config.php
में इसे सही जगह जोड़ें। ख़ासकरservice_manager
पार्ट सही हो।रूट जोड़ें (module.config.php)
MySQL इन्टेग्रेशन के लिए दो रूट ऐड करें:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... अन्य रूट्स 'mysql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysqlAdd', ], ], ], 'mysql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/mysql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'mysql', ], ], ], ], ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34कंट्रोलर मेथड्स जोड़ें (IndexController.php)
कंट्रोलर में MySQL के लिए कंस्ट्रक्टर,
mysqlAddAction
वmysqlAction
जोड़ें:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } /** * Default action to display the welcome page. */ public function indexAction() { return new ViewModel([ 'message' => 'Hello ServBay!', ]); } /** * MySQL में 'users' टेबल में रिकॉर्ड जोड़ें। */ public function mysqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-mysql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'MySQL User added successfully.' : 'Failed to add MySQL user.'; return new ViewModel([ 'message' => $message, ]); } /** * MySQL 'users' टेबल से डेटा प्राप्त करें। */ public function mysqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => json_encode($users, JSON_PRETTY_PRINT), ]); } // ... अन्य एक्शन }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75व्यू फाइल बनाएं
module/Application/view/application/index/mysql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/mysql.phtml
:php<h1>MySQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2MySQL डेमो एक्सेस करें
ServBay में MySQL सेवा शुरू करें।
https://servbay-zend-test.local/mysql-add
पर जाएँ (यूज़र जोड़ने के लिए) औरhttps://servbay-zend-test.local/mysql
पर जाकर रिकार्ड देखें (JSON फॉर्मेट में)।
PostgreSQL एकीकरण उदाहरण
Zend Framework कंट्रोलर में PostgreSQL के साथ कनेक्शन व क्वेरी के उदाहरण:
डेटाबेस कनेक्शन सेट करें
config/autoload/global.php
में:php<?php // config/autoload/global.php return [ 'db' => [ 'driver' => 'Pdo_Pgsql', 'database' => 'servbay_zend_app', 'username' => 'root', 'password' => 'password', 'hostname' => '127.0.0.1', 'port' => 5432, ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13कंट्रोलर फैक्ट्री सेट करें (module.config.php)
यदि आपने MySQL वाले स्टेप में सेट कर लिया है, तो दोबारा करने की जरूरत नहीं।
रूट जोड़ें (module.config.php)
PostgreSQL के लिए दो रूट्स जोड़ें:
php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... अन्य रूट्स 'pgsql-add' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql-add', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsqlAdd', ], ], ], 'pgsql' => [ 'type' => Literal::class, 'options' => [ 'route' => '/pgsql', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'pgsql', ], ], ], ], ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34कंट्रोलर मेथड्स जोड़ें (IndexController.php)
pgsqlAddAction
औरpgsqlAction
मेथड्स जोड़ें:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Db\Adapter\AdapterInterface; use Laminas\Db\Sql\Sql; class IndexController extends AbstractActionController { private $adapter; public function __construct(AdapterInterface $adapter) { $this->adapter = $adapter; } // ... मौजूदा ऐक्शन /** * PostgreSQL में 'users' में रिकॉर्ड जोड़ें। */ public function pgsqlAddAction() { $sql = new Sql($this->adapter); $insert = $sql->insert('users') ->values([ 'name' => 'ServBay Demo User', 'email' => 'demo-pgsql@servbay.test', ]); $statement = $sql->prepareStatementForSqlObject($insert); $result = $statement->execute(); $message = $result->getAffectedRows() > 0 ? 'PostgreSQL User added successfully.' : 'Failed to add PostgreSQL user.'; return new ViewModel([ 'message' => $message, ]); } /** * PostgreSQL 'users' टेबल से डेटा प्राप्त करें। */ public function pgsqlAction() { $sql = new Sql($this->adapter); $select = $sql->select('users'); $statement = $sql->prepareStatementForSqlObject($select); $result = $statement->execute(); $users = []; foreach ($result as $row) { $users[] = $row; } return new ViewModel([ 'users' => json_encode($users, JSON_PRETTY_PRINT), ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65व्यू फाइल बनाएं
module/Application/view/application/index/pgsql-add.phtml
:php<h1><?php echo $this->message; ?></h1>
1module/Application/view/application/index/pgsql.phtml
:php<h1>PostgreSQL Users</h1> <pre><?php echo $this->users; ?></pre>
1
2PostgreSQL डेमो एक्सेस करें
PostgreSQL जीवित है, सुनिश्चित करें। फिर
https://servbay-zend-test.local/pgsql-add
पर जाएं (यूज़र जोड़ें), औरhttps://servbay-zend-test.local/pgsql
पर यूज़र विवरण देखें।
Memcached एकीकरण उदाहरण
Zend Framework कंट्रोलर में Memcached से डेटा कैश उदाहरण:
Memcached एडॉप्टर इंस्टॉल करें
Composer से निम्न डिपेंडेंसी जोड़ें:
json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-memcached": "^2.0" } }
1
2
3
4
5
6
7फिर:
bashcomposer update
1(ServBay में memcached एक्सटेंशन पहले से इंस्टॉल है।)
रूट जोड़ें (module.config.php)
module/Application/config/module.config.php
में:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... अन्य रूट्स 'memcached' => [ 'type' => Literal::class, 'options' => [ 'route' => '/memcached', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'memcached', ], ], ], ], ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24कंट्रोलर मेथड जोड़ें (IndexController.php)
memcachedAction
मेथड ऐड करें:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... कंस्ट्रक्टर और अन्य मेथड /** * Memcached का प्रयोग दिखाने वाला एक्शन। */ public function memcachedAction() { // Memcached कैश स्टोरेज उदाहरण बनाएं (127.0.0.1:11211) $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'memcached', 'options' => [ 'servers' => [ ['127.0.0.1', 11211], ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_memcached_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Memcached! (Source से डेटा, cached at ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $cachedData, ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53व्यू फाइल बनाएँ
module/Application/view/application/index/memcached.phtml
:php<h1>Memcached Example</h1> <p><?php echo $this->message; ?></p>
1
2Memcached डेमो एक्सेस करें
Memcached चालू है, सुनिश्चित करें।
https://servbay-zend-test.local/memcached
पर जाएँ। पहली बार CACHE MISS दिखेगा, फिर अगले 300 सेकंड में CACHE HIT संदेश आएगा।
Redis एकीकरण उदाहरण
Zend Framework कंट्रोलर में Redis के साथ कैशिंग/स्टोरेज का उदाहरण:
Redis एडॉप्टर इंस्टॉल करें
Composer से:
json// composer.json { "require": { "laminas/laminas-skeleton-application": "^1.0", "laminas/laminas-cache-storage-adapter-redis": "^2.0", "ext-redis": "*" } }
1
2
3
4
5
6
7
8फिर:
bashcomposer update
1(ServBay में redis एक्सटेंशन पहले से इंस्टॉल है।)
रूट जोड़ें (module.config.php)
module/Application/config/module.config.php
में:php<?php // module/Application/config/module.config.php namespace Application; use Laminas\Router\Http\Literal; return [ 'router' => [ 'routes' => [ // ... अन्य रूट्स 'redis' => [ 'type' => Literal::class, 'options' => [ 'route' => '/redis', 'defaults' => [ 'controller' => Controller\IndexController::class, 'action' => 'redis', ], ], ], ], ], // ... अन्य सेटिंग्स ];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24कंट्रोलर मेथड जोड़ें (IndexController.php)
redisAction
मेथड ऐड करें:php<?php declare(strict_types=1); namespace Application\Controller; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use Laminas\Cache\StorageFactory; use Laminas\Cache\Storage\StorageInterface; class IndexController extends AbstractActionController { // ... कंस्ट्रक्टर और अन्य मेथड /** * Redis का प्रयोग दिखाने वाला एक्शन। */ public function redisAction() { // Redis कैश स्टोरेज उदाहरण बनाएं (127.0.0.1:6379) $cache = StorageFactory::factory([ 'adapter' => [ 'name' => 'redis', 'options' => [ 'server' => [ 'host' => '127.0.0.1', 'port' => 6379, ], 'ttl' => 300, ], ], 'plugins' => [ 'serializer', 'exception_handler' => ['throw_exceptions' => false], ], ]); $cacheKey = 'my_redis_data'; $cachedData = $cache->getItem($cacheKey, $success); if (!$success) { $cachedData = 'Hello Redis! (Source से डेटा, cached at ' . date('Y-m-d H:i:s') . ')'; $cache->setItem($cacheKey, $cachedData); $cachedData .= ' - CACHE MISS'; } else { $cachedData .= ' - CACHE HIT'; } return new ViewModel([ 'message' => $cachedData, ]); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54व्यू फाइल बनाएँ
module/Application/view/application/index/redis.phtml
:php<h1>Redis Example</h1> <p><?php echo $this->message; ?></p>
1
2Redis डेमो एक्सेस करें
Redis चालू है, सुनिश्चित करें। फिर
https://servbay-zend-test.local/redis
पर जाएँ। पहली बार CACHE MISS मिलेगा, फिर CACHE HIT (300 सेकंड के भीतर) का मैसेज।
निष्कर्ष
ऊपर बताए गए चरणों का पालन करके, आपने ServBay का उपयोग करते हुए लोकल डेवलपमेंट वातावरण में एक Zend Framework (Laminas) प्रोजेक्ट सफलतापूर्वक बनाया, कॉन्फ़िगर किया और चलाया। अब आपको ServBay की वेबसाइट सेटिंग से वेब सर्वर को अपने प्रोजेक्ट की public डायरेक्ट्री पर पॉइंट करना और MySQL, PostgreSQL, Memcached, Redis सेवा का एकीकरण आया है।
ServBay के ज़रिए लोकल डेवेलपमेंट का सेटअप और प्रबंधन अत्यंत सरल हो जाता है, जिससे आप कोडिंग और प्रोजेक्ट निर्माण पर आसानी से फोकस कर सकते हैं। ServBay के समृद्ध पैकेज और फ्लेक्सिबल कॉन्फ़िगरेशन से आप अपने लोकल सिस्टम पर प्रोडक्शन जैसे वातावरण बिना परेशानी बना सकते हैं और उत्पादकता बढ़ा सकते हैं।