Chế độ nhị phân_được sử dụng trong việc liên kết với một trong những chế độ khác ạn muốn dùng chế độ này nếu hệ thống tập

Một phần của tài liệu Tìm hiểu MYSQL và PHP, hiện thực ứng dụng quản lý xuất nhập tân dược cho công ty xuất nhập khẩu Y tế thành phố Hồ Chí Minh (Trang 48 - 51)

những chế độ khác. Bạn muốn dùng chế độ này nếu hệ thống tập tin của bạn khác nhau giữa tập tin nhị phân và tập tin văn bản. Hệ thống Windows thì khác nhau còn Unix thì không.

Tham số thứ ba của fopen() là tuỳ chọn. Bạn sử dụng tuỳ chọn nếu bạn

muốn tìm đường dẫn (include_path) đến tập tin. Nếu bạn muốn dùng thì bạn phải thiết lập tham số này thành 1. Nếu dùng tham số này thì không cần thêm tên thư mục hay đường dẫn đến tập tin. Ví dụ:

$fp = fopen (‚file_name‛, ‚a‛, 1);

Nếu mở tập tin thành công, con trỏ chỉ đến tập tin được trả về và được lưu trong một biến, trong trường hợp này là $fp. Bạn sử dụng biến này để truy xuất tập tin.

Bạn cũng có thể dùng fopen() để mở tập tin qua FTP hay HTTP. Nếu tên tập tin bắt đầu với ftp:// thì một kết nối FTP được mở đến server và kết quả sẽ được trả về.

Nếu tên tập tin bắt đầu với http:// thì một kết nối HTTP được mở đến server và kết quả sẽ được trả về. Khi dùng chế độ HTTP, bạn phải có dấu /. Ví dụ như: http://www.server.com/.

Hàm fopen() không hỗ trợ HTTP chuyển hướng, vì thế bạn phải chỉ ra URL tham chiếu tới thư mục sau dấu /.

Lỗi thường gặp khi mở tập tin là cố mở một tập tin không cho quyền đọc và viết. PHP sẽ cảnh báo cho bạn.

Viết tập tin: Viết vào tập tin trong PHP tương đối đơn giản. Có thể dùng hàm fwrite() (viết vào tập tin) hoặc fputs() (đặt chuỗi vào tập tin),

fputs() là bí danh của fwrite(). Ta gọi hàm fwrite() như sau: fwrite($fp, $outputstring);

Hàm fwrite() có 3 tham số nhưng tham số thứ ba là tuỳ chọn. Cấu trúc chung của fwrite() là:

fwrite(int fp, string str, int [length]);

Tham số thứ ba của fwrite(), length, số byte tối đa được viết vào. Nếu có dùng tham số này thì fwrite() sẽ viết chuỗi vào tập tin được chỉ đến bởi fp cho đến khi kết thúc chuỗi hay kết thúc số byte chiều dài.

Đóng tập tin: Khi dùng xong một tập tin thì cần phải đóng tập tin. Nên

dùng với hàm fclose(): fclose($fp);

Hàm này trả về giá trị đúng nếu tập tin đóng thành công hoặc sai nếu không thành công.

Đọc từ tập tin: Trước tiên là mở tập tin để đọc: fopen().

Khi nào ngừng mở tập tin thì gọi hàm feof(): Hàm feof() sẽ trả về giá trị đúng nếu con trỏ tập tin ở tại vị trí kết thúc tập tin. Mặc dù tên nghe lạ nhưng dễ nhớ khi biết feof là: File End Of File.

Đọc một dòng một lần: fgets(), fgetss(), fgetcsv()

$order = fgets($fp, 100);

Hàm này dùng để đọc một dòng từ tập tin. Hàm sẽ đọc đến khi bắt gặp ký tự (\n), bắt gặp một EOF, hay đọc 99 byte từ tập tin. Chiều dài tối đa để đọc bằng chiều dài trừ đi một byte.

Có nhiều hàm khác nữa dùng để đọc tập tin. Hàm fgets() thông dụng khi giải quyết các tập tin có chứa văn bản thuần tuý.

Một biến thể của fgets() là fgetss().

String Fgetss(int fp, int length, string [allowable_tags]);

Hàm fgetcsv() là biến thể khác của fgets(). Hàm này dùng để ngắt

những dòng trong tập tin khi bạn dùng ký tự phân ranh, như ký tự tab, hay dấu phẩy.

Đọc cả tập tin: readfile(), fpassthru(), file()

Thay vì đọc mỗi lần một dòng thì ta đọc cả tập tin. Có 3 cách thực hiện: Cách thứ nhất dùng readfile(), gọi hàm readfile() để mở tập tin, hiển thị nội dung chuẩn và đóng tập tin. Mẫu của readfile():

Int readfile(string filename, int [use_include_path]);

Cách thứ hai dùng fpassthru(). Dùng fopen() để mở tập tin trước. Sau đó gởi một tập tin như gởi đối số vào fpassthru(), nó sẽ kết xuất nội dung của tập tin từ vị trí con trỏ hướng tới xuất chuẩn. Đóng tập tin khi đã hoàn thành. Hàm này trả về giá trị đúng nếu đọc thành công và sai khi không thành công.

Cách thứ ba dùng hàm file(). Hàm này thay vì hiển thị để xuất, nó đưa vào một mảng. Ví dụ: $filearray = file($fp);

Nó sẽ đọc cả tập tin vào mảng $filearray. Mỗi dòng của tập tin sẽ được lưu trong mỗi phần tử của mảng.

Đọc một ký tự fgetc(): Để đọc mỗi lần một giá trị từ tập tin ta dùng hàm fgetc(). Nó tạo con trỏ tập tin như một tham số và trả về ký tự kế trong tập tin.

Đọc một chiều dài bất kỳ: Ta dùng hàm fread()

Sử dụng hàm fread() để đọc số byte chiều dài từ tập tin. Hàm này sử dụng như sau:

String fread( int fp, int length);

Kiểm tra tập tin có tồn tại không: Ta dùng hàm file_exists()

Nếu muốn kiểm tra một file xem có tồn tại không mà không cần mở nó ta dùng hàm file_exists().

Kiểm tra kích cỡ tập tin: dùng hàm filesize(). Cách dùng:

Echo filesize(‚$DOCUMENT_ROOT/../orders/orders.txt‛); Có thể dùng với fread để đọc cả tập tin.

Xóa tập tin: Ta dùng hàm unlink()

unlink(‚$DOCUMENT_ROOT/../orders/orders.txt‛); Hàm trả về sai nếu tập tin chưa được xóa.

Vị trí bên trong tập tin: Ta dùng hàm rewind (), fseek(), ftell()

Chúng ta có thể vận dụng và khám phá vị trí bên trong tập tin bằng cách dùng hàm rewind (), fseek(), ftell(). Hàm rewind () khởi tạo lại vị trí con trỏ tập tin về nơi bắt đầu tập tin. Hàm ftell() thông báo trong tập tin con trỏ trỏ cách xa bao nhiêu byte. Hàm fseek() dùng khởi tạo con trỏ tập tin trỏ đến một số điểm trong tập tin. Dạng của nó là:

Fseek(int fp, int offset);

Hàm fseek() khởi tạo con trỏ tập tin trỏ đến byte offset trong tập tin. Hàm rewind () tương đương hàm fseek() với offset là zero.

Khóa tập tin: Giả sử có hai người dùng cùng gọi fopen(). Điều gì sẽ

xảy ra khi một người bắt đầu viết vào tập tin, kế đến một người khác cũng gọi fopen() và bắt đầu viết? Nội dung cuối cùng của tập tin là gì? Để tránh vấn đề trên ta dùng khóa tập tin.

Sử dụng hàm flock() có thể tránh được tình trạng trên. Hàm này gọi sau khi một tập tin đã được mở nhưng trước bất kỳ dữ liệu nào được đọc từ tập tin hay viết vào tập tin. Dạng của hàm này :

Flock (int fp, int operation);

Bạn cần đưa vào hàm một con trỏ trỏ tới tập tin mở và số đại diện cho kiểu khóa mà bạn yêu cầu. Nó trả về true nếu khóa thành công và trả về false

nếu không thành công. Các giá trị thao tác của hàm flock() gồm :

1 Khóa đọc. Nghĩa là tập tin được chia sẽ với nhiều người đọc. 2 Khóa viết. Đây là khóa dành riêng. Tập tin không thể chia sẽ.

3 Khóa tồn tại bản quyền.

Một phần của tài liệu Tìm hiểu MYSQL và PHP, hiện thực ứng dụng quản lý xuất nhập tân dược cho công ty xuất nhập khẩu Y tế thành phố Hồ Chí Minh (Trang 48 - 51)

Tải bản đầy đủ (PDF)

(118 trang)