Re: php extension about php_stream_fopen_tmpfile()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, May 10, 2013 at 3:37 AM, Bleakwind <bleakwind@xxxxxxxxx> wrote:

> I write a php extension.
> How can I user Zend API do that?
> where can I find some doc about file_handle->handle ?
>


There's not really a place to ask questions for writing extensions, but
most people here will not be able to answer your question, because they
only write PHP code.
The documentation for the Zend API is freely available from their website.
If it is not there, have a look at the source code, the best documentation
around for any product.
If you still have problems with an extension, the best place to ask would
be the PHP internals list, where the PHP devs hang around, but it does
probably require more understanding from your side first.



>
> ZEND_API zend_op_array *(*org_compile_file)(zend_file_handle *file_handle,
> int type TSRMLS_DC);
> ZEND_API zend_op_array *sead_compile_file(zend_file_handle *file_handle,
> int type TSRMLS_DC)
> {
>     php_stream *stream;
>     char *data_decode;
>     int data_decode_len;
>

Neither php_stream_write nor fwrite use the int type, use size_t instead.


>
>     /* ... */
>
>     /* Zend API Begin: This unsuccessful */
>     php_stream *tmpstream;
>     if ((tmpstream = php_stream_fopen_tmpfile()) == NULL) {
>         php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create
> temporary file.  Check permissions in temporary files directory.");
>         php_stream_close(stream);
>         return org_compile_file(file_handle, type TSRMLS_CC);
>     }
>     numbytes = php_stream_write(tmpstream, data_decode, data_decode_len);
>     if (numbytes != data_decode_len) {
>         php_error_docref(NULL TSRMLS_CC, E_WARNING, "Only %d of %d bytes
> written, possibly out of free disk space", numbytes, data_decode_len);
>         numbytes = -1;
>     }
>     php_stream_rewind(tmpstream);
>     /* Zend API End */
>
>     /* C Begin: This is OK */
>     FILE *tmpstream;
>     tmpstream = tmpfile();
>     fwrite(data_decode, data_decode_len, 1, tmpstream);
>     rewind(tmpstream);
>     /* C End */
>
>
So what happens? You haven't shown us any error, crash, etc?

- Matijn

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux