Tôi đoán, dựa trên câu hỏi trước của bạn, rằng điều này đang được hỏi trong ngữ cảnh sử dụng CGI :: Application module của perl, với CGI :: Application :: Plugin :: Phiên. Nếu bạn sử dụng mô-đun đó với các thiết lập mặc định, nó sẽ ghi dữ liệu phiên vào các tệp được lưu trữ trong thư mục/tmp - rất giống với những gì PHP làm. Nếu ứng dụng của bạn đang chạy trong môi trường lưu trữ được chia sẻ, bạn có thể KHÔNG muốn thực hiện việc này vì lý do bảo mật vì những người dùng khác có thể xem/sửa đổi dữ liệu trong/tmp. Bạn có thể sửa lỗi này bằng cách ghi các tệp vào một thư mục mà chỉ bạn mới được phép đọc/ghi (tức là, không phải/tmp). Trong khi phát triển, tôi thích sử dụng YAML để tuần tự hóa hơn là mặc định (có thể lưu trữ), vì nó có thể đọc được. Nếu bạn có máy chủ web của riêng mình và bạn có thể chạy máy chủ cơ sở dữ liệu (mysql) trên cùng một máy, thì lưu trữ dữ liệu phiên trong cơ sở dữ liệu thay vì tệp thường mang lại hiệu suất cao hơn - đặc biệt nếu bạn có thể để duy trì kết nối cơ sở dữ liệu liên tục (tức là sử dụng mod_perl hoặc fastcgi).NHƯNG - nếu cơ sở dữ liệu của bạn nằm trên máy chủ từ xa và bạn phải mở kết nối mới mỗi lần bạn cần cập nhật dữ liệu phiên, thì hiệu suất có thể tồi tệ hơn và ghi vào tệp có thể tốt hơn. Lưu ý rằng bạn cũng có thể sử dụng sqlite, trông giống như một cơ sở dữ liệu cho ứng dụng của bạn, nhưng thực sự chỉ là một tệp trên hệ thống tệp cục bộ của bạn. Bất kể hiệu suất, tùy chọn cơ sở dữ liệu có thể không mong muốn trong môi trường máy chủ chia sẻ vì giới hạn băng thông và các hạn chế tài nguyên khác. Sự khác biệt về hiệu suất cũng có thể không đáng kể đối với một trang web có lưu lượng truy cập thấp (tức là, một vài nghìn lần truy cập mỗi ngày).
Để rõ ràng, ngôn ngữ như PHP lưu trữ phiên trong tệp theo mặc định, bên trong/tmp. Tuy nhiên, các tệp này được quản lý bởi thời gian chạy, bạn sẽ không bao giờ cần truy cập phiên làm việc theo cách bạn sẽ truy cập tệp. RoR sử dụng cookie theo mặc định, một lần nữa, dựa trên tệp nhưng không được xử lý như vậy. –