reza.sh

مقالات مرتیط با php

نظر شما در رابطه با این مقالات؟   2 کاربر تا کنون رای داده اند

  1. 1. نظر شما در رابطه با این مقالات؟

    • عالیه
    • خوبه
    • بد نیست
      0
    • جای کار داره
      0

لطفا وارد حساب کاربری خود شوید یا ثبت نام نمایید تا بتوانید رای خود را در نظر سنجی ارسال نمایید.

2 پست در این موضوع

با سلام

دوستان قصد دارم تو تایپک مقالاتی که در مورد PHP هستند رو قرار بدم

دقت کنید که گفتم مقالات احتمال داره مقالات جنبه آموزش کد های PHP رو نداشته باشند.

اولین مقاله :: پی اچ پی گریزی در ایران

همایش سراسری نرم افزارهای آزاد زنجان – ایران

نویسنده : محمد افاضاتی

منبع : http://www.phpdevelopers.ir

Share this post


Link to post
Share on other sites
آموزش ووکامرس قالب جوملا قالب وردپرس قالب رایگان وردپرس قالب رایگان جوملا هاست نامحدود هاست جوملا هاست لاراول هاست وردپرس هاست ارزان هاست ربات تلگرام خرید دامنه آموزش ساخت ربات تلگرام با php آموزش لاراول آموزش cPanel آموزش php آموزش فرم ساز RSform آموزش ساخت ربات جذب ممبر آموزش ساخت ربات دوستیابی آموزش ساخت ربات فروشگاهی برای ووکامرس آموزش طراحی سایت داینامیک با php آموزش بخش پشتیبانی با rsticket

اگه شما برای مدتی با پی اچ پی کار کرده باشید،احتمالا با دو مفهوم آشنای وب پیچ و وب سرور مواجه شده اید.در حالیکه این غریب نیست پی اچ پی با وجود اینکه یک زیان اسکریپتی برای تولید صفحات پویا می باشد ولی نمی توان از قدرت افزونش چشم پوشی کرد،چنانچه شما در این مقاله خواهید دید که می توانید کارهای بیشتری غیر از فقط متصل شدن به دیتابیس و خواندن و نوشتن رکوردهایش در یک قالب اچ تی ام ال کنید. یکی از بهترین اسرارهای محافظت شده پی اچ پی که من به طور کاملا تصادفی فهمیدم،مجموعه بسیار جامع از توابع برنامه نویسی شبکه است،در حال حاضر API های پروگرمینگِ سوکت، تقریبا به طور کامل تمامی نیازهای شما را برای ارتباطات مبتنی بر سوکت و سرور کلاینت که بر روی پروتکل TCP/IP است را پشتیبانی میکند و میتوان به سرعت برنامه های کلاینت سروری ساده با پی اچ پی ساخت.

در طی این مقاله،من یک نگاه نزدیکتر به توابع بسیار مهم در این API با استفاده از کدها و توضیحات قرار داده شده در داخلشان خواهم داشت.در طی این مقاله نیز من چند برنامه ی کلاینت سروری ساده میسازم و به بدین وسیله کارایی پی اچ پی را به عنوان یک ابزار توسعه و گسترش سریع برای برنامه های مبتنی بر شبکه به صورت عملی نشان خواهم داد.

باید در ابتدا ذکر کنم که این مقاله مقدماتی بوده و در درجه اول برای توسعه دهندگان وب که علاقه مند به گسترش دانش پی اچ پی خود در محدوده برنامه نویسی شبکه هستند میباشد.

پی اچ پی یک مجموعه نسبتا جامعی از توابع برای ایجاد و دستکاری ارتباطات سوکتی به همراه دارد.با این وجود این قابلیت به طور پیش فرض فعال نیس در نتیجه لازم است پارامتر “–enable-sockets” را فعال کنید.

خب بهتره با یه مثال ساده شروع کنیم که TCPسرور یک رشته را به عنوان ورودی میگیرد و آنرا معکوس کرده و به کلاینت بر میگرداند:

<?
[TABLE]
[TR]
[TD="class: content"]// متغییر هایی دلخواه و مورد نیاز تعریف میکنیم[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$host = "192.168.1.99";[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$port = 1234;[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]//  timeout نداریم![/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]set_time_limit(0);[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// یک سوکت میسازیم[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]socket\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// الحاق سوکت به پورت[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$result = socket_bind($socket, $host, $port) or die("Could not bind to[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]socket\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// شروع انتظار برای ارتباط[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$result = socket_listen($socket, 3) or die("Could not set up socket[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]listener\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// پذیرفتن ارتباط ورودی[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// spawn کردن سوکت برای مدیریت ارتباط[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$spawn = socket_accept($socket) or die("Could not accept incoming[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]connection\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// خواندن ورودی کلاینت[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$input = socket_read($spawn, 1024) or die("Could not read input\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// پاک سازی ورودی[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$input = trim($input);[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// معکوس کردن ورودی کلاینت و باز پس فرستادن[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]$output = strrev($input) . "\n";[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]socket_write($spawn, $output, strlen ($output)) or die("Could not write[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]output\n");[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]// بستن سوکت[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]socket_close($spawn);[/TD]
[/TR]
[/TABLE]

[TABLE]
[TR]
[TD="class: content"]socket_close($socket);[/TD]
[/TR]
[/TABLE]

?>

این کد تا حدودی پیچیده به نظر میاد پس توضیحاتی به ترتیب کد داده میشود:


۱-در گام اول یک جفت متغیر برای نگه داری اطلاعات IP آدرس و پورت که بر روی سرور سوکت، اجرا خواهند شد را تعریف میکنیم.می توانید هر پورتی از محدوده ۱ تا ۶۵۵۳۵ بر روی سرور خود تنظیم و استفاده کنید به شرطیکه پورت قبل شما در حال استفاده نباشد.

$host = "192.168.1.99";$port = 1234;

2-از آنجایی که کارمان با سرور است این ایده نیز خوب است که از تابع set_time_limit() برای مطمئن شدن از اینکه پی اچ پی تایم اوت نشده و یا زمانیکه برای اتصالهای ورودی کلاینت صبر میکنیم die() نشده باشد،استفاده کنیم.

set_time_limit(0);

3-با این مقدمات حال وقت آن است که با تابع socket_create() یک سوکت ایجاد کنیم،این تابع یک handle بر میگرداند که در بسیاری از فراخوانی های توابع دیگر مورد استفاده قرار میگرد.

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not createsocket\n");

4- زمانیکه یک کنترلر یا هندل برای سوکتی ساخته شد در گام بعدی آنرا به یک پورت یا آدرس مشخص الحاق یا “bind” میکنیم که از طریق تابع socket_bind() این کار انجام میشود.

$result = socket_bind($socket, $host, $port) or die("Could not bind tosocket\n");

5-با استفاده از سوکت ایجاد و متصل شده به یک پورت،زمان آن است منتظر ارتباطهای دریافتی باشیم یا به عبارتی گوش دهیم(Listen) .پی اچ پی به شما اجازه میدهد تا سوکت را توسط تابع socket_listen() به عنوان گوش دهنده تنظیم کنید همچنین به شما اجازه میدهد تعداد ارتباطاتِ صف شده به عنوان پارامتر دوم را تعیین کنید.

$result = socket_listen($socket, 3) or die("Could not set up socketlistener\n");

7-با توجه به اینکه اتصال برقرار شده است،حال سرور منتظر می ماند که کلاینت یک ورودی ارسال کند. این ورودی توسط تابع socket_read() خوانده میشود و به متغییر $input ریخته میشود.

$input = socket_read($spawn, 1024) or die("Could not read input\n");

پارامتر دوم socket_read() مقدار بایت لازم برای خواندن از ورودی را مشخص میکند. میتوانید برای محدود کردن حجم خواندن جریان داده ها از کلاینت از این پارامتر استفاده کنید.

نکته: تابع socket_read() خواندن داده ها از کلاینت را تا زمانی که با یک بازگشت نورد(\n)، tab (\t) یا یک کاراکتر \۰ مواجه شود ادامه میدهد.این کرکتر به عنوان کارکتر پایانِ ورودی تلقی میشود.

۸-حال سرور باید اطلاعات ارسال شده توسط کلاینت را پردازش کند،در این مثال،این پردازش فقط شامل معکوس کردن رشته ورودی و ارسال آن به کلاینت است،این کار توسط تابع socket_write() انجام میشود.

$output = strrev($input) . "\n";
[TABLE]
[TR]
[TD="class: content"]socket_write($spawn, $output, strlen ($output)) or die("Could not write[/TD]
[/TR]
[/TABLE]

output\n");

تابع socket_write() به سه پارامتر نیاز دارد:یک مرجع برای سوکت،رشته ای برای نوشتن در داخل آن،و مقدار بایت نوشته شده.

۹-هنگامی که خروجی به کلاینت فرستاده شد،هر دو سوکت ایجاد شده توسط تابع socket_close() بسته میشوند.

socket_close($spawn);socket_close($socket);

نویسنده :: Code::Blocks

Share this post


Link to post
Share on other sites

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری