PHP

PHP

IP Camera snapshot

โดย Little Bear on 27 ก.ค. 54 14:59

D-Link DCS-3411

mjpeg

http://camera ip/video/mjpg.cgi

jpeg

http://camera ip/image/jpeg.cgi

http://camera ip/image/jpeg.cgi?profileid=1

From D-Link forum

Axis 205 Network Camera

Main page

http://camera ip/view/view.shtml?videos=

View moving jpg

http://camera ip/mjpg/video.mjpg

Take snapshot

http://camera ip/snapshot.shtml?picturepath=' + picturepath

Current image url

http://camera ip/jpg/image.jpg

Capture image with curl

curl -O http://camera ip/jpg/image.jpg

Crontab

Get file from ftp upload

* * * * * /usr/local/bin/curl http://domain.com/flood/camera/ftp/(camid)?ajax >> /home/(user)/cron.log 2>&1

** Get file from camera

* * * * * /usr/local/bin/curl http://domain.com/flood/camera/update/(camid)?ajax >> /home/(user)/cron.log 2>&1

เรียนรู้เพิ่มเติม

Enable Exif

โดย Little Bear on 27 ก.ค. 54 14:57

Enter /usr/local/directadmin/custombuild ("cd /usr/local/directadmin/custombuild").

If you use PHP5 CLI, create the directory custom/ap2 ("mkdir -p custom/ap2"), then copy configure/ap2/configure.php5 to custom/ap2/configure.php5.

If you use PHP5 CGI, create the directory custom/suphp ("mkdir -p custom/suphp"), then copy configure/suphp/configure.php5 to custom/suphp/configure.php5.

Open the copied file and add "--enable-exif" to the list. Remember that there must be a "\" at the very end of every line but the last one.

Reinstall php ("./build php n").Thanks for your help, that did the trick! Now I now this for the next time when I need to enable or install an plugin:)Thanks again!

ที่มา : DirectAdmin

Make Ubuntu to be a web server (LAMP)

โดย Little Bear on 21 มิ.ย. 54 12:33

ติดตั้ง Ubuntu Desktop ให้เป็น Server (LAMP)

ผ่านไป 2 ปี ก็ถึงเวลาต้องติดตั้ง Ubuntu ใหม่เสียที คราวนี้เลยถือโอกาสเปลี่ยนเป็น Ubuntu 11.04 64 bit ไปเลย ก็เลยลองมารีวิวการติดตั้ง LAMP บน Ubuntu ใหม่ว่ามีอะไรที่เปลี่ยนแปลงไปบ้าง

หมายเหตุ : การติดตั้งต่อไปนี้ใช้สิทธิ์ของ root ขอให้เข้าสู่สิทธิ์ของ root โดยการเปิด terminal แล้วพิมพ์ sudo su

Install L.A.M.P Stack (Apache, Mysql, PHP) ทีเดียวซะเลย

root@god:/# apt-get install lamp-server^

แล้วก็ลง phpMyAdmin

root@god:/# apt-get install phpmyadmin

เลือก Apache แล้ว YES สำหรับ dbconfig-common.

ติดตั้งเพิ่มเติม

php5-curl

root@god# apt-get install php5-curl

หรือชอบที่จะลงทีละตัว ก็

Install Apache

root@god:/# apt-get install apache2

Enable mod_rewrite

root@god:/# a2enmod rewrite

เปลี่ยน DocumentRoot ของ apache เป็น folder อื่น และเปิดใช้งาน clean url

root@god:/# nano /etc/apache2/sites-available/default
  • เปลี่ยนบรรทัด /var/www/ เป็น /my web folder/ จำนวน 2 ตำแหน่ง
  • แก้ค่า AllowOverride ของ /my web folder/ จาก None เป็น AllowOverride All

Install PHP

root@god:/# apt-get install php5 libapache2-mod-php5 php5-gd
root@god:/# /etc/init.d/apache2 restart

Install MySQL

root@god:/# apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin
root@god:/# /etc/init.d/apache2 restart

หากมีข้อมูลเก่าของ mysql ก็สามารถ copy มาไว้ที่ /var/lib/mysql แล้ว โดยใช้คำสั่ง

root@god:/# cp /media/disk/var/lib/mysql/* /var/lib/mysql/
root@god:/# chown -hR mysql /var/lib/mysql/*
root@god:/# chgrp -hR mysql /var/lib/mysql/*

ย้ายข้อมูล mysql ไปไว้ที่อื่น

root@god:/# /etc/init.d/mysql stop
root@god:/# mkdir /home/mysql
root@god:/# chown -R mysql:mysql /home/mysql
root@god:/# cp -r /var/lib/mysql/mysql /home/mysql/
root@god:/# chown -R mysql:mysql /home/mysql/*

แล้วแก้ my.cnf

root@god:/# nano /etc/mysql/my.cnf

หาคำนี้ให้เจอ :

datadir = /var/lib/mysql

แล้วเปลี่ยนเป็นตำแหน่งใหม่ :

datadir = /home/mysql

เสร็จแล้วก็ restart mysql service

root@god:/# /etc/init.d/mysql start
Starting MySQL database server mysqld [ OK ]

แล้ว mysql จะทำการสร้างไฟล์ ibdata1, ib_logfile0, อื่น ๆ ขึ้นมาใหม่

ทุกอย่างน่าจะเรียบร้อย แต่ผมไม่สามารถ start mysql ได้ มันค้างอยู่ เลยต้องไปแก้ค่าในไฟล์ /etc/apparmor.d/usr.sbin.mysqld โดยเปลี่ยนค่า /var/lib/mysql ให้เป็น /home/mysql ด้วย

แล้วคราวนี้ก็ทำการ copy ฐานข้อมูลเก่า ๆ มาได้เลย อย่าลืมเปลี่ยน owner/group เป็น mysql ด้วยนะ

ที่มา

#sudo apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
<a class="hashtag" href="/tags/sudo">#sudo</a> apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Class fpdf กับภาษาไทย

โดย Little Bear on 16 มี.ค. 54 15:56

มีงานที่จะต้องทำใบประกาศนียบัตร โดยต้องออกผลลัพท์มาเป็นไฟล์ pdf ซึ่งจะต้องมีชื่อเป็นภาษาไทยอยู่ด้วย ลองใช้ class fpdf มาช่วยในการสร้างไฟล์ pdf

ขั้นตอน

  1. โหลดไฟล์ class fpdf มาติดตั้งก่อน
  2. วิธีสร้าง Font ให้ Class fpdf ตอนที่ 1 และ ตอนที่ 2 หรือ สร้างไฟล์ PDF จาก PHP ออกรายงาน php เป็นภาษาไทย Thai Font
  3. แล้วค่อยเขียนโปรแกรมเพื่อสร้าง pdf

มาแล้ว PHP 5.3 พร้อมกับ error ที่ไม่คาดฝัน

โดย Little Bear on 20 เม.ย. 53 21:19

สักวันหนึ่งมันต้องมา แล้วมันก็มาจริง ๆ ด้วย

มี host ที่ใช้งานอยู่แห่งหนึ่ง เดิมก็ใช้ PHP 5.2 แล้ววันดีคืนดี เขาก็ปรับรุ่นเป็น PHP 5.3 โดยไม่บอกกล่าว

ผลเหรอครับ : เว็บไซท์แทบจะหยุดทำงาน พร้อมทั้งแสดง error เพียบ

กำลังนั่งทยอยปรับแก้โปรแกรมอยู่ ยังไม่เรียบร้อยแล้ว

  1. เปลี่ยน callusermethodarray($methodname, $classname, $args) เป็น calluserfuncarray(array($classname, $methodname), $args)
  2. เปลี่ยน callusermethod($methodname,$classname) เป็น calluserfunc(array($classname,$methodname))

พอมีแหล่งอ้างอิงสำหรับการปรับโปรแกรมจาก PHP 5.2 เป็น PHP 5.3 เช่น

Hello Twetter from SoftGanz

โดย Little Bear on 7 ก.ย. 52 19:09

ได้ PHP Script ในการส่ง Twitter เลยเอามาลองใส่เพิ่มใน CMS ที่ผมเขียนใช้เอง

อันสืบเนื่องมาจากผมเขียน CMS ขึ้นมาใช้เอง และได้เห็น CMS ดัง ๆ หลายตัวสามารถส่งข้อความ Twit ได้ อยากได้บ้าง แต่เพิ่งได้มาจากเว็บ Scriptdd.com เลยเอามาดัดแปลงใช้กับ CMS ของตนเองให้สามารถส่งหัวข้อที่สร้างใหม่ไปไว้ใน Twitter

Twitter ของผมคือ @softganz ครับ

ผมสร้างไว้เป็น class api เขียนด้วย PHP ตามตัวอย่าง

Shoutcast radio status

โดย Little Bear on 25 ส.ค. 52 12:43

ปัญหาเกิดมาจาก script สำหรับตรวจสอบสถานะและแสดงชื่อเพลงที่กำลังเปิดอยู่นั้นกิน CPU time เยอะมาก และ script นั้นยังถูกกำหนดให้ refresh ทุก 30 วินาที เมื่อมีคนเปิดฟังวิทยุพร้อมกับดูสถานะเป็นจำนวนมาก จะทำให้เกิดปัญหากับ CPU load

เลยศึกษา script นั้นดูและเปลี่ยนวิธีการเพื่อไม่ให้เกิด CPU load

แนวทางการทำงานของ script เดิมที่เป็นอยู่

  1. จะดึงข้อมูลของ Shoutcast จาก host ด้วย fsocket method GET จำนวน 2 ครั้ง คือ ชื่อเพลง กับจำนวนคนฟัง โดยกำหนด timeout ไว้ที่ 6 วินาที
  2. ตัดข้อความที่ไม่ต้องการออกและแยกแยะเอาข้อความที่ต้องการออกมา
  3. แสดงผลในหน้าเว็บโดยให้ refresh ทุก ๆ 30 วินาที

ปัญหาที่เกิดขึ้นคือ

  1. การดึงข้อมูลผ่าน fsocket แต่ละครั้งใช้เวลาพอสมควรเนื่องจาก script อยู่คนละที่กับ Shoutcast server
  2. เกิด CPU load ในกระบวนการไหนไม่แน่ใจ
  3. จำนวน request ที่เยอะมากเกิดจาก จำนวนคนฟังหรือหน้าเว็บที่เปิดดูสถานะ x 2 คร้ง/นาที เช่น 150x2=300 ครั้ง/นาที = 5 ครั้ง/วินาที ทำ script ทำงานไม่ทัน

แนวทางใหม่ที่คิดคือ

แทนที่จะให้ทุกคน request แล้วต้องอ่านข้อมูลทุกครั้ง ก็ให้ script ทำงานอัตโนมัติทุก ๆ 30 วินาที ไปดึงข้อมูลจาก Shoutcast แล้วบันทึกเก็บไว้ในไฟล์ แล้วให้ทุกคนอ่านจากไฟล์นี้แทน

ดูตัวอย่าง script ได้จากด้านในนะครับ

50+ PHP optimisation tips revisited

โดย Little Bear on 21 มิ.ย. 52 11:34

เขียน PHP มาก็หลายปี พยายามปรับปรุงความรู้ตัวเองอยู่เรื่อย ๆ วันนี้ได้ Tips ในการเขียนมาเก็บไว้อีกชุดหนึ่ง ก็เอามาจากของคนอื่นแหละ ไว้ค่อยปรับเพิ่มเติมของตนเองวันหลัง

How to install Lighttpd+PHP4+MySql5 on Ubuntu 8.10

โดย Little Bear on 30 พ.ย. 51 00:14

หลังจากที่ตัดสินใจปรับ CMS ที่เขียนอยู่ไปวิ่งบน PHP5 ก็ไม่นึกว่าจะต้องกลับมาทดสอบ CMS กับ PHP4+MySql3 อีกแล้ว แต่หลังจากที่ยังคงมีเว็บที่ดูแลอยู่อีก 3 เว็บยังคงทำงานอยู่บน PHP4 และไม่มีแนวโน้มว่าเขาจะปรับเวอร์ชั่นของ PHP ให้ (หรือเขาจะปรับให้แต่คิดเงินอีกหลายพัน) ก็เลยต้องกลับมาปรับแก้โปรแกรมใหม่ (ซึ่งจริง ๆ ก็คงไม่มากนัก แต่ต้องตรวจสอบใหม่ทั้งระบบ)

พยายามติดตั้ง Apache2+PHP4+MySql3 แต่ติดปัญหาตอนติดตั้ง PHP4

เลยติดตั้ง Lighttpd+php4+MySql5 แทน

  • ติดตั้ง Lighttpd โดย

    sudo apt-get install lighttpd lighttpd-doc

  • ติดตั้ง php4-cgi

    sudo apt-get install php4-cgi
    sudo apt-get install php4-mysql

  • เปิดใช้งาน cgi

    sudo lighty-enable-mod cgi

  • แก้ไขไฟล์ /etc/lighttpd/conf-enabled/10-cgi.conf โดยเอาเครื่องหมาย # หน้า cgi.assign ออกให้หมด

หากใน sources list ไม่มี php4-cgi ก็ให้เพิ่ม sources นี้ใน /etc/apt/sources.list ซึ่งได้มาจาก http://www.dotdeb.org/mirrors/

deb http://mirror.oeg.com.au/packages.dotdeb.org stable all
deb-src http://mirror.oeg.com.au/packages.dotdeb.org stable all

และอาจจะต้องติดตั้ง libzzip-0-12 ก่อน

ข้อมูลอ้างอิง

ปล. อาจจะมั่ว ๆ ไปนิด วันหลังจะมาเรียบเรียงใหม่อีกทีนะครับ <!-- อย่างแรกคือ ติดตั้ง apache2 ก่อน

sudo apt-get install apache2

ต่อมาติดตั้ง php4-cgi

sudo apt-get install php4-cgi

php จะถูกติดตั้งไว้ที่ ในชื่อ php-cgi -->