@pubnub/mcp
Version:
PubNub Model Context Protocol MCP Server for Cursor and Claude
170 lines (133 loc) • 3.96 kB
Markdown
# PHP SDK 8.0.2 – Overview (Condensed)
This page shows the minimum you need to:
1. Install the SDK
2. Configure a client
3. Add listeners
4. Subscribe / Publish
5. Run a complete example
All code blocks, method signatures, and parameters are unchanged.
## Prerequisites
* PHP ≥ 7.0
* Composer
* PubNub account (publish & subscribe keys)
## 1. Get Keys
Create or open an app in the PubNub Admin Portal, then copy its **Publish** and **Subscribe** keys.
## 2. Install SDK
```
composer init
```
```
composer require pubnub/pubnub
```
## 3. Initialize PubNub
```php
// Include Composer autoloader (adjust path if needed)
require_once 'vendor/autoload.php';
use PubNub\PNConfiguration;
use PubNub\PubNub;
// Create a new configuration instance
$pnConfiguration = new PNConfiguration();
// Set subscribe key (required)
$pnConfiguration->setSubscribeKey("demo"); // ← replace
// Set publish key (only required if publishing)
```
(See /docs/sdks/php/api-reference/configuration for all options.)
## 4. Event & Status Listeners
```php
use PubNub\Callbacks\SubscribeCallback;
use PubNub\Enums\PNStatusCategory;
class MySubscribeCallback extends SubscribeCallback {
function status($pubnub, $status) {
if ($status->getCategory() === PNStatusCategory::PNUnexpectedDisconnectCategory) {
echo "Unexpected disconnect - network may be down" . PHP_EOL;
} else if ($status->getCategory() === PNStatusCategory::PNConnectedCategory) {
echo "Connected to PubNub!" . PHP_EOL;
} else if ($status->getCategory() === PNStatusCategory::PNDecryptionErrorCategory) {
// Handle message decryption error
```
(Full listener details: /docs/sdks/php/api-reference/configuration#event-listeners)
## 5. Subscribe
```php
// Subscribe to a channel
$pubnub->subscribe()
->channels("hello_world")
->withPresence(true) // optional
->execute();
```
Subscription is a long-running (blocking) call.
## 6. Publish
```php
use PubNub\Exceptions\PubNubServerException;
use PubNub\Exceptions\PubNubException;
// Assuming $pubnub is already initialized
try {
// Create message data
$messageData = [
"text" => "Hello from PHP SDK!",
"timestamp" => time(),
"sender" => [
"name" => "PHP Publisher",
"id" => $pnConfiguration->getUserId()
```
Messages must be JSON-serializable and < 32 KiB.
## 7. Run the App
Terminal 1 – subscriber:
```
php subscribe.php
```
Terminal 2 – publisher:
```
php publish.php
```
Expected output:
```
Connected to PubNub!
Received message: {"text":"Hello from PHP SDK!", ... }
```
## 8. Complete Example
### subscribe.php
```php
require_once 'vendor/autoload.php';
use PubNub\PubNub;
use PubNub\Enums\PNStatusCategory;
use PubNub\Callbacks\SubscribeCallback;
use PubNub\PNConfiguration;
// Create configuration
$pnConfiguration = new PNConfiguration();
$pnConfiguration->setSubscribeKey("demo");
$pnConfiguration->setPublishKey("demo");
$pnConfiguration->setUserId("php-sdk-subscriber");
```
(remaining lines unchanged)
### publish.php
```php
require_once 'vendor/autoload.php';
use PubNub\PNConfiguration;
use PubNub\PubNub;
use PubNub\Exceptions\PubNubServerException;
use PubNub\Exceptions\PubNubException;
// Create configuration with demo keys
$pnConfig = new PNConfiguration();
$pnConfig->setSubscribeKey("demo");
$pnConfig->setPublishKey("demo");
$pnConfig->setUserId("php-publisher-demo");
```
(remaining lines unchanged)
## Troubleshooting (quick list)
* No connection → verify keys, internet, firewall
* No message → check channel name, ensure subscriber is running
* Build errors → PHP ≥ 7, correct Composer install/imports
* Script exits → avoid web time-outs for long subscriptions
## Next Steps
Presence, Message Persistence, Access Manager, additional examples and API reference are linked in the original docs.