Skip to content

Commit f84f6d0

Browse files
committed
added function appserver_register_file_upload(), appserver_set_headers_sent()
1 parent c64ef6e commit f84f6d0

File tree

5 files changed

+76
-8
lines changed

5 files changed

+76
-8
lines changed

build.default.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
# ---- General Settings ---------------------------------------------------------
1111
php.ext.name = appserver
1212

13-
release.version = 0.1.0
13+
release.version = 0.1.1
1414
release.stability = beta
15-
api.version = 0.1.0
15+
api.version = 0.1.1
1616
api.stability = beta
1717

1818
php.version = 5.5.2

pecl/package2.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ta
2626
<api>${api.stability}</api>
2727
</stability>
2828
<license uri="http://www.php.net/license/3_01.txt">PHP 3.01</license>
29-
<notes>initital release</notes>
29+
<notes>version-release</notes>
3030
<contents>
3131
<dir name="/">
3232
<file name="CREDITS" role="doc" />

src/appserver.c

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ int (*appserver_orig_header_handler)(sapi_header_struct *h AS_SAPI_HEADER_OP_DC,
5151

5252
const zend_function_entry appserver_functions[] = {
5353
PHP_FE(appserver_get_headers, NULL)
54+
PHP_FE(appserver_register_file_upload, NULL)
55+
PHP_FE(appserver_set_headers_sent, NULL)
5456
PHP_FE_END
5557
};
5658

@@ -101,6 +103,7 @@ static void appserver_header_remove_by_prefix(appserver_llist *headers, char *pr
101103

102104
static int appserver_header_handler(sapi_header_struct *h AS_SAPI_HEADER_OP_DC, sapi_headers_struct *s TSRMLS_DC)
103105
{
106+
104107
if (APPSERVER_GLOBALS(headers)) {
105108
switch (op) {
106109

@@ -142,26 +145,26 @@ static int appserver_header_handler(sapi_header_struct *h AS_SAPI_HEADER_OP_DC,
142145
// return appserver_orig_header_handler(h AS_SAPI_HEADER_OP_CC, s TSRMLS_CC);
143146
// }
144147

148+
// set headers not be sent yet
149+
SG(headers_sent) = 0;
150+
145151
return SAPI_HEADER_ADD;
146152
}
147153

148-
149154
static void php_appserver_shutdown_globals (zend_appserver_globals *appserver_globals TSRMLS_DC)
150155
{
151156

152157
}
153158

154159
static void php_appserver_init_globals(zend_appserver_globals *appserver_globals)
155160
{
156-
157161
/* Override header generation in SAPI */
158162
if (sapi_module.header_handler != appserver_header_handler) {
159163
appserver_orig_header_handler = sapi_module.header_handler;
160164
sapi_module.header_handler = appserver_header_handler;
161165
}
162166

163167
appserver_globals->headers = NULL;
164-
165168
}
166169

167170
PHP_MSHUTDOWN_FUNCTION(appserver)
@@ -191,7 +194,6 @@ PHP_MINIT_FUNCTION(appserver)
191194

192195
PHP_RINIT_FUNCTION(appserver)
193196
{
194-
195197
APPSERVER_GLOBALS(headers) = appserver_llist_allocate(appserver_llist_string_destor);
196198

197199
return SUCCESS;
@@ -213,6 +215,29 @@ PHP_MINFO_FUNCTION(appserver)
213215
*/
214216
}
215217

218+
PHP_FUNCTION(appserver_register_file_upload)
219+
{
220+
char *path;
221+
int path_len;
222+
HashTable *uploaded_files = NULL;
223+
224+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE) {
225+
return;
226+
}
227+
228+
// check if uploaded files sapi globals are not initialised
229+
if (!SG(rfc1867_uploaded_files)) {
230+
ALLOC_HASHTABLE(uploaded_files);
231+
zend_hash_init(uploaded_files, 5, NULL, NULL, 0);
232+
SG(rfc1867_uploaded_files) = uploaded_files;
233+
}
234+
235+
// add to zend hash table
236+
zend_hash_add(SG(rfc1867_uploaded_files), path, path_len + 1, &path, sizeof(char *), NULL);
237+
238+
RETURN_TRUE;
239+
}
240+
216241
PHP_FUNCTION(appserver_get_headers)
217242
{
218243
appserver_llist_item *header_item;
@@ -225,6 +250,18 @@ PHP_FUNCTION(appserver_get_headers)
225250
}
226251
}
227252

253+
PHP_FUNCTION(appserver_set_headers_sent)
254+
{
255+
zend_bool headers_sent_flag = 0;
256+
257+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &headers_sent_flag) == FAILURE) {
258+
return;
259+
}
260+
261+
// set headers not be sent yet
262+
SG(headers_sent) = headers_sent_flag;
263+
}
264+
228265

229266
// ---------------------------------------------------------------------------
230267
// Zend Extension Functions

src/appserver.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,34 @@
2525
echo "SAPI_TYPE: " . PHP_SAPI;
2626
echo PHP_EOL . "==========================================". PHP_EOL;
2727

28-
echo "CALL appserver_get_headers()" . PHP_EOL;
28+
appserver_set_headers_sent(true);
29+
$result = var_export(headers_sent(), true);
30+
echo "CALL appserver_set_headers_sent(true): -> headers_sent = " . $result . PHP_EOL;
31+
appserver_set_headers_sent(false);
32+
$result = var_export(headers_sent(), true);
33+
echo "CALL appserver_set_headers_sent(false): -> headers_sent = " . $result . PHP_EOL;
34+
echo PHP_EOL . "==========================================". PHP_EOL;
35+
36+
echo "CALL appserver_get_headers(): -> ";
2937
echo var_export(appserver_get_headers(), true);
3038
echo PHP_EOL . "==========================================". PHP_EOL;
39+
40+
echo "CALL headers_sent(): -> ";
41+
echo var_export(headers_sent(), true);
42+
echo PHP_EOL . "==========================================". PHP_EOL;
43+
44+
45+
$temp_filenames[] = tempnam('/tmp', '');
46+
$temp_filenames[] = tempnam('/tmp', '');
47+
$temp_filenames[] = tempnam('/tmp', '');
48+
$temp_filenames[] = tempnam('/tmp', '');
49+
50+
foreach ($temp_filenames as $index => $temp_filename) {
51+
file_put_contents($temp_filename, 'Hi there iam a upload file.');
52+
echo "CALL #$index appserver_register_file_upload(): -> ";
53+
echo var_export(appserver_register_file_upload($temp_filename), true);
54+
echo PHP_EOL . "==========================================". PHP_EOL;
55+
56+
echo "CALL #$index move_uploaded_file: -> " .var_export(move_uploaded_file($temp_filename, '/tmp/move_uploaded_file_success'), true);
57+
echo PHP_EOL . "==========================================". PHP_EOL;
58+
}

src/php_appserver.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,12 @@ PHP_RSHUTDOWN_FUNCTION(appserver);
6464
PHP_MINFO_FUNCTION(appserver);
6565

6666
PHP_FUNCTION(appserver_get_headers);
67+
PHP_FUNCTION(appserver_register_file_upload);
68+
PHP_FUNCTION(appserver_set_headers_sent);
6769

6870
ZEND_BEGIN_MODULE_GLOBALS(appserver)
6971
appserver_llist *headers;
72+
HashTable *uploaded_files;
7073
long pproftrace;
7174
ZEND_END_MODULE_GLOBALS(appserver)
7275

0 commit comments

Comments
 (0)