Node.js-এ ওয়ার্ডপ্রেস প্লেগ্রাউন্ড ব্যবহার
একটি WebAssembly প্রজেক্ট হিসেবে আপনি Node.js-এও ওয়ার্ডপ্রেস প্লেগ্রাউন্ড ব্যবহার করতে পারেন।
আন্ডারলায়িং WebAssembly PHP রানটাইমের ওপর যদি আপনার সরাসরি নিয়ন্ত্রণের প্রয়োজন হয়, তবে @php-wasm/node প্যাকেজটি দেখতে পারেন। এটি ওয়ার্ডপ্রেস প্লেগ্রাউন্ডের বিভিন্ন টুলে ব্যবহৃত Node.js লোডার এবং রানটাইম ইন্টিগ্রেশন সরবরাহ করে। কম্পাইল করা বাইনারিগুলো @php-wasm/node-8-4-এর মতো নির্দিষ্ট ভার্সনের প্যাকেজে প্রকাশিত হয়।
@php-wasm/universal, Node.js ও ওয়েব অ্যাডাপ্টার এবং নির্দিষ্ট ভার্সনের প্যাকেজগুলো কীভাবে একসাথে কাজ করে তা জানতে PHP.wasm packages দেখুন। ওই পেজে আরও কম ডিপেন্ডেন্সি ফুটপ্রিন্টসহ লোয়ার-লেভেল, একক-ভার্সন সেটআপ সম্পর্কেও আলোচনা করা হয়েছে।
Classes, Functions, Interfaces এবং Type Aliases-এর সম্পূর্ণ তালিকা দেখুন।
Node.js-এর জন্য WebAssembly PHP
একসাথে @php-wasm/node এবং একটি ভার্সন-নির্দিষ্ট প্যাকেজ Node.js-এর জন্য অপ্টিমাইজ করা কম্পাইল্ড PHP রানটাইম ও JavaScript API প্রদান করে। PHP একটি ইন-মেমরি ফাইলসিস্টেম নিয়ে শুরু হয়; হোস্ট পাথ মাউন্ট করতে Node.js ফাইলসিস্টেম হেল্পার ব্যবহার করুন। আপনি যদি একটি কাস্টম WebSocket-to-TCP প্রক্সি যুক্ত করেন তবে রানটাইম নেটওয়ার্কও অ্যাক্সেস করতে পারে।
বেসিক ব্যবহার
import { PHP } from '@php-wasm/universal';
import { loadNodeRuntime } from '@php-wasm/node';
const php = new PHP(await loadNodeRuntime('8.3'));
const output = await php.runStream({
code: '<?php phpinfo(); ?>',
});
console.log(await output.stdoutText);
সরাসরি একটি নির্দিষ্ট PHP ভার্সন লোড করা
যদি ইনস্টলেশনের আকার গুরুত্বপূর্ণ হয় এবং আপনার শুধুমাত্র শেয়ার্ড, লো-লেভেল PHP API প্রয়োজন হয়, তবে আপনি @php-wasm/node বাদ দিয়ে শুধুমাত্র একটি Node.js বিল্ড ইনস্টল করতে পারেন:
npm install @php-wasm/universal @php-wasm/node-8-4
এই পদ্ধতি নেটওয়ার্কিং, ফাইল লকিং এবং এক্সটেনশন লোডিংয়ের মতো Node.js-নির্দিষ্ট সেটআপ এড়িয়ে চলে। সম্পূর্ণ উদাহরণ এবং ট্রেডঅফ দেখতে Load one PHP version directly দেখুন।
PHP এক্সটেনশন লোড করা
PHP শুরু হওয়ার আগে অপশনাল এক্সটেনশন সক্রিয় করতে extensions লোডার অপশন ব্যবহার করুন:
import { PHP } from '@php-wasm/universal';
import { loadNodeRuntime } from '@php-wasm/node';
const php = new PHP(
await loadNodeRuntime('8.4', {
extensions: ['intl', 'redis', 'memcached', { name: 'xdebug', options: { ideKey: 'PLAYGROUND' } }],
})
);
একই অ্যারে ম্যানিফেস্ট থেকে এক্সটার্নাল JSPI .so আর্টিফ্যাক্ট লোড করতে পারে:
const php = new PHP(
await loadNodeRuntime('8.4', {
extensions: [
{
source: {
format: 'manifest',
manifestUrl: './dist/wp_mysql_parser/manifest.json',
},
},
],
})
);
এক্সটার্নাল এক্সটেনশনের জন্য JSPI প্রয়োজন। Asyncify সাপোর্ট শুধুমাত্র PHP.wasm প্যাকেজের সাথে আসা বান্ডেলড এক্সটেনশনগুলোর মধ্যেই সীমাবদ্ধ।