php - notification in stream_context_set_params() not called
I am using this code in php (Wordpress) to check for download progress:
// Create context
$context = stream_context_create();
stream_context_set_params( $context, [ 'notification' => 'my_stream_notification_callback' ] );
// Declare progress function
function my_stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
print_r(func_get_args());
}
// Call download
$wp_upload_dir = wp_upload_dir();
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r' ), null, $context );
The code does download the file successfully in the /wp-content/uploads/
folder, but does not print any notification / progress.
I tried also by writing to error_log()
in the my_stream_notification_callback()
function but it does not write anything there and the debug.log
file is empty. Which means the notification callback is not being called at all.
Anyone has any idea why this would happen?
Here is a question with similar code but different problem:
Download files file_put_contents with progress
Evidently, the code works for him after the callback function was fixed for a class/object method function. While I am trying a simpler callback function that should definitely work.
Any ideas?
-- EDIT --
I found an example on php.net here:
http://php.net/manual/en/function.stream-notification-callback.php
I used that example and it seems to work.
See the code I used (a bit changed from the example):
$ctx = stream_context_create();
stream_context_set_params( $ctx, [
"notification" => function ( $notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max ) {
print_r(func_get_args());
},
] );
file_get_contents( "http://php.net/contact", false, $ctx );
Now this code works and prints out the progress notifications:
Does it mean that file_put_contents()
or fopen()
has problems with context/notifications that file_get_contents()
do not have?
--EDIT--
Here is the change what actually works:
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r', null, $context ) );
Means, instead of applying $context to file_put_contents()
we apply it to fopen()
call and it works!
php wordpress fopen file-put-contents
add a comment |
I am using this code in php (Wordpress) to check for download progress:
// Create context
$context = stream_context_create();
stream_context_set_params( $context, [ 'notification' => 'my_stream_notification_callback' ] );
// Declare progress function
function my_stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
print_r(func_get_args());
}
// Call download
$wp_upload_dir = wp_upload_dir();
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r' ), null, $context );
The code does download the file successfully in the /wp-content/uploads/
folder, but does not print any notification / progress.
I tried also by writing to error_log()
in the my_stream_notification_callback()
function but it does not write anything there and the debug.log
file is empty. Which means the notification callback is not being called at all.
Anyone has any idea why this would happen?
Here is a question with similar code but different problem:
Download files file_put_contents with progress
Evidently, the code works for him after the callback function was fixed for a class/object method function. While I am trying a simpler callback function that should definitely work.
Any ideas?
-- EDIT --
I found an example on php.net here:
http://php.net/manual/en/function.stream-notification-callback.php
I used that example and it seems to work.
See the code I used (a bit changed from the example):
$ctx = stream_context_create();
stream_context_set_params( $ctx, [
"notification" => function ( $notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max ) {
print_r(func_get_args());
},
] );
file_get_contents( "http://php.net/contact", false, $ctx );
Now this code works and prints out the progress notifications:
Does it mean that file_put_contents()
or fopen()
has problems with context/notifications that file_get_contents()
do not have?
--EDIT--
Here is the change what actually works:
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r', null, $context ) );
Means, instead of applying $context to file_put_contents()
we apply it to fopen()
call and it works!
php wordpress fopen file-put-contents
add a comment |
I am using this code in php (Wordpress) to check for download progress:
// Create context
$context = stream_context_create();
stream_context_set_params( $context, [ 'notification' => 'my_stream_notification_callback' ] );
// Declare progress function
function my_stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
print_r(func_get_args());
}
// Call download
$wp_upload_dir = wp_upload_dir();
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r' ), null, $context );
The code does download the file successfully in the /wp-content/uploads/
folder, but does not print any notification / progress.
I tried also by writing to error_log()
in the my_stream_notification_callback()
function but it does not write anything there and the debug.log
file is empty. Which means the notification callback is not being called at all.
Anyone has any idea why this would happen?
Here is a question with similar code but different problem:
Download files file_put_contents with progress
Evidently, the code works for him after the callback function was fixed for a class/object method function. While I am trying a simpler callback function that should definitely work.
Any ideas?
-- EDIT --
I found an example on php.net here:
http://php.net/manual/en/function.stream-notification-callback.php
I used that example and it seems to work.
See the code I used (a bit changed from the example):
$ctx = stream_context_create();
stream_context_set_params( $ctx, [
"notification" => function ( $notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max ) {
print_r(func_get_args());
},
] );
file_get_contents( "http://php.net/contact", false, $ctx );
Now this code works and prints out the progress notifications:
Does it mean that file_put_contents()
or fopen()
has problems with context/notifications that file_get_contents()
do not have?
--EDIT--
Here is the change what actually works:
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r', null, $context ) );
Means, instead of applying $context to file_put_contents()
we apply it to fopen()
call and it works!
php wordpress fopen file-put-contents
I am using this code in php (Wordpress) to check for download progress:
// Create context
$context = stream_context_create();
stream_context_set_params( $context, [ 'notification' => 'my_stream_notification_callback' ] );
// Declare progress function
function my_stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
print_r(func_get_args());
}
// Call download
$wp_upload_dir = wp_upload_dir();
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r' ), null, $context );
The code does download the file successfully in the /wp-content/uploads/
folder, but does not print any notification / progress.
I tried also by writing to error_log()
in the my_stream_notification_callback()
function but it does not write anything there and the debug.log
file is empty. Which means the notification callback is not being called at all.
Anyone has any idea why this would happen?
Here is a question with similar code but different problem:
Download files file_put_contents with progress
Evidently, the code works for him after the callback function was fixed for a class/object method function. While I am trying a simpler callback function that should definitely work.
Any ideas?
-- EDIT --
I found an example on php.net here:
http://php.net/manual/en/function.stream-notification-callback.php
I used that example and it seems to work.
See the code I used (a bit changed from the example):
$ctx = stream_context_create();
stream_context_set_params( $ctx, [
"notification" => function ( $notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max ) {
print_r(func_get_args());
},
] );
file_get_contents( "http://php.net/contact", false, $ctx );
Now this code works and prints out the progress notifications:
Does it mean that file_put_contents()
or fopen()
has problems with context/notifications that file_get_contents()
do not have?
--EDIT--
Here is the change what actually works:
file_put_contents( $wp_upload_dir['basedir'] . '/contact.htm', fopen( 'http://php.net/contact', 'r', null, $context ) );
Means, instead of applying $context to file_put_contents()
we apply it to fopen()
call and it works!
php wordpress fopen file-put-contents
php wordpress fopen file-put-contents
edited Nov 22 '18 at 7:36
Imran Ahmed
asked Nov 22 '18 at 7:08
Imran AhmedImran Ahmed
418
418
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
As given in the documentation at http://php.net/stream_context_set_params, the notification
callback is only triggered for ftp
and http
connections. As you use it to write something to a local directory (through another protocol), it's pretty obvious why the callback is never called.
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425548%2fphp-notification-in-stream-context-set-params-not-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
As given in the documentation at http://php.net/stream_context_set_params, the notification
callback is only triggered for ftp
and http
connections. As you use it to write something to a local directory (through another protocol), it's pretty obvious why the callback is never called.
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
add a comment |
As given in the documentation at http://php.net/stream_context_set_params, the notification
callback is only triggered for ftp
and http
connections. As you use it to write something to a local directory (through another protocol), it's pretty obvious why the callback is never called.
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
add a comment |
As given in the documentation at http://php.net/stream_context_set_params, the notification
callback is only triggered for ftp
and http
connections. As you use it to write something to a local directory (through another protocol), it's pretty obvious why the callback is never called.
As given in the documentation at http://php.net/stream_context_set_params, the notification
callback is only triggered for ftp
and http
connections. As you use it to write something to a local directory (through another protocol), it's pretty obvious why the callback is never called.
answered Nov 22 '18 at 7:16
Nico HaaseNico Haase
2,58992032
2,58992032
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
add a comment |
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Thanks Nico for your answer. But in this SO post (stackoverflow.com/questions/34292472/…) the user had it working for file_put_content(), is it some difference of php settings/config?
– Imran Ahmed
Nov 22 '18 at 7:20
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
Are you sure about this? He claims multiple times that all approaches are not working
– Nico Haase
Nov 22 '18 at 7:22
1
1
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
I think you are right, the guy has accepted the answer which makes it feel like his problem is solved. But the code actually does not work. I have made a change in my code a little and it works. The idea is what you said that context is applied to file writing, while it should be applied to file reading part. Let me update my question with the fix.
– Imran Ahmed
Nov 22 '18 at 7:35
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53425548%2fphp-notification-in-stream-context-set-params-not-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown