I'm about to get my hands dirty writing an FTP wrapper for PHP, I just need to perform the basics:

* read / write and append to files
* list / chmod and delete files / folders

Unfortunately I only had to mess with FTP within PHP once to [answer this question](https://stackoverflow.com/questions/4576025/web-site-backup-in-php/4775933#4775933), and I got somewhat disappointed with the `ftp` extension, mainly because it ain't trivial to distinguish between files and folders and the overall speed wasn't great.

As far as I know PHP has four distinct ways of interacting with FTP servers:

1. Pure Socket Implementation
2. File Wrappers
3. FTP Extension
4. CURL Extension

Now, I don't want to code the FTP client protocol myself, so option #1 is out of the equation.

File wrappers are great if I need to do something trivial like getting a single file, but they are extremely slow if I need to perform more complex operations since each call will open its own connection.

That leaves me with the FTP and CURL extensions, and here is where I need some guidance. As I said before I am not a big fan of the FTP extension, on the other hand I've never used CURL to FTP so I can't objectively compare one with the other.

Has anyone ever tried both approaches? What are your thoughts on them? Is the CURL option faster?

Also, are there any alternatives I'm not aware of?