2011-08-11 22 views
26

echo bằng fputs(STDOUT) hoặc không echo ghi vào luồng khác? Tôi đã sử dụng PHP trong một thời gian, nhưng tôi không biết những gì thực sự xảy ra ở mức thấp hơn.hiện echo bằng fputs (STDout)?

Trả lời

39

Theo PHP's manual page on wrappers, câu trả lời là số

php: // sản lượng

php: // đầu ra là một dòng ghi-duy nhất cho phép bạn ghi vào cơ chế đệm đầu ra giống như print() và echo().

printecho ghi vào php://output suối, trong khi fputs(STDOUT) ghi vào php://stdout.

tôi đã làm một chút thử nghiệm:

<?php 

$output = fopen('php://output', 'w'); 
ob_start(); 

echo "regular echo\n"; 
fwrite(STDOUT, "writing to stdout directly\n"); 
fwrite($output, "writing to php://output directly\n"); 

$ob_contents = ob_get_clean(); 
print "ob_contents: $ob_contents\n"; 

Kịch bản này kết quả đầu ra (thử nghiệm trên PHP 5.2.13, cửa sổ):

writing to stdout directly 
ob_contents: regular echo 
writing to php://output directly 

ví dụ: văn bản cho STDOUT trực tiếp bỏ qua xử lý ob.

+0

Vị trí mặc định thông thường ở đâu mà đầu ra cho STDOUT được lưu trữ? Ví dụ. STDERR ghi vào 'C: \ xampp \ apache \ logs \ error.log' nhưng STDOUT dường như" mất tích ". – Pacerier

Các vấn đề liên quan